Expression | Meaning |
XXX | XXX нэртэй бүх тагуудыг ялган авна |
* | Бүх тагуудыг болон элементийг авна. |
../TITLE | Эцэг элементийн TITLE тагийг авна. |
XXX[@AAA] | XXX тагууд дотроос attribute нь AAA гэсэн нэртэй байх тагуудыг авна. |
*[last()] | Сонгосон элементийн сүүлчийн хүү элементийг авна. |
*/ZZZ | ZZZ элементүүдийн хамгийн дээд талд байгааг сонгон авна. |
XXX[ZZZ] | XXX элемент нь ZZZ гэсэн хүү элементтэй бол авна. |
XXX[@WIDTH and not(@WIDTH="20")] | XXX элемент нь WIDTH гэсэн attribute -тай ба утга нь "20" -с ялгаатай бол авна. |
/* | document -ийн хамгийн захын ( гадна талд байгаа ) элементийг авна. |
//TITLE | document -ийн TITLE нэртэй тагуудыг авна. |
./@* | Сонгосон элементийн ( current element ) бүх attributes -г авна. |
Өгүүлбэрийн төгсгөлд "авна" гэж бичсэн байгаа нь утга буцаана гэсэн утгыг илэрхийлнэ.
Доорхи жишээг харна уу!
Ямар нэгэн XML файл:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<XDataTable name="Table1" rowcount="1">
<Columns>
<XDataColumn name="id" size="9" type="Long"/>
<XDataColumn name="name" size="150" type="String"/>
<XDataColumn name="image" size="4" type="ByteArray"/>
</Columns>
<Rows>
<XDataRow index="0"><id>1</id><name>b.boldbaatar</name><image>df56382d63412d</image></XDataRow>
</Rows>
</XDataTable>
Хандаж ажиллаж байгаа жишээ class элдэв функыг нь хасаад:
тод хараар тэмдэглэсэн хэсгийг сайн ажиглаарай.
мэдээж энэхүү классыг ашиглахын өмнө Document үүсгэн XML -г
унших ёстой.
package xdata;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.List;
import xdata.Interface.IDataColumn;
import xdata.Interface.IDataRow;
import xdata.Interface.IDataTable;
import AIObjectManager.AIXMLBuilder; // Xml -тэй ажилладаг зарим код
import java.io.Serializable;
import java.util.ArrayList;
import javax.xml.xpath.XPathConstants;
import org.w3c.dom.*;
import org.w3c.dom.Element;
/**
*
* @author boroo
*/
public class XDataTable implements IDataTable, Serializable {
private Document xdoc;
private ActionListener tranEvent;
public XDataTable() {
//xdoc = new com.sun.org.apache.xerces.internal.dom.DocumentImpl();
this("");
}
public XDataTable(Document doc) {
this.xdoc = doc;
}
public void addColumn(IDataColumn column) {
String exp = "//XDataColumn[@name='" + column.getName() + "']@name";
if(XdbEngine.get(this.xdoc.getOwnerDocument(), exp, XPathConstants.NODE) != null) {
throw new RuntimeException("Column name is already exists in table !");
}
NodeList nodes = this.xdoc.getElementsByTagName("Columns");
Node node = nodes.item(0);
Element newCol = this.xdoc.createElement("XDataColumn");
newCol.setAttribute("name", column.getName());
newCol.setAttribute("type", column.getType().name());
newCol.setAttribute("auto", "" + column.getAuto());
newCol.setAttribute("empty", "" + column.getEmpty());
node.appendChild(newCol);
}
public List<IDataRow> getRows() {
//String exp = "/XDataTable/Rows/node()";
//NodeList rows = (NodeList) XdbEngine.get(this.xdoc, exp, XPathConstants.NODESET);
NodeList rows = this.xdoc.getElementsByTagName("XDataRow");
int l = rows.getLength();
ArrayList<IDataRow> list = new ArrayList<IDataRow>();
for (int i = 0; i < l; i++) {
Element item = (Element) rows.item(i);
XDataRow row = new XDataRow();
row.FillFrom(item);
list.add(row);
}
return list;
}
public int getRowCount() {
String exp = "//XDataTable[@rowcount]/@rowcount";
Node curr = (Node) XdbEngine.get(this.xdoc, exp, XPathConstants.NODE);
return Integer.parseInt(curr.getNodeValue());
}
private void setRowCount(int rowcount) {
String exp = "//XDataTable[@rowcount]/@rowcount";
Node curr = (Node) XdbEngine.get(this.xdoc, exp, XPathConstants.NODE);
curr.setNodeValue("" + rowcount);
}
public void Commit() {
String exp = "//XDataRow[@handle != '1']/@handle";
NodeList curr = (NodeList) XdbEngine.get(this.xdoc, exp, XPathConstants.NODESET);
for(int i = 0; i < curr.getLength(); i++){
Node nod = curr.item(i);
nod.setNodeValue("1");
}
if(this.tranEvent != null)
this.tranEvent.actionPerformed(
new ActionEvent(this, 0, "Commit"));
}
public void setDocument(Document doc) {
this.xdoc = doc;
}
public Document getDocument() {
return this.xdoc;
}
}
No comments:
Post a Comment