JDOM 2 获取特定 XML 元素的位置和索引
JDOM 2 Get position and index of a specific XML element
我有一个 XML 文档,我想使用现有元素的名称和属性在特定位置(索引)添加一个元素,所以我必须找到这个特定元素的索引。
示例:
<root org="667">
<myobject name="Propert1">KS7799</p>
<myobject name="Propert2">88YSJJ</p>
<myobject name="Propert3">KKQ87</p>
<myobject name="Propert4">122ZKK</p>
<myobject name="Propert5">LQLX9</p>
<myobject name="Propert6">LLQS8</p> // I want to get index of this element
<myobject name="Propert7">LLLX9</p>
<myobject name="Propert8">LLSSKNX9</p>
<myobject name="Propert9">MQLKSQ9</p>
<myobject name="Propert10">MLKLKQSQ9</p>
</root>
我的代码:
for (Element ObjectElement : Dataelement.getChildren("myobject")) {
Attribute nameattr_class = ObjectElement.getAttribute("name");
if (nameattr_class.getValue().equals("Propert6")) {
// I want to index of this element
}
}
如果您知道要在其后插入的元素,您可以做一些事情....
你可以在集合上得到一个迭代器,然后添加元素....像:
Element toinsert = new Element("toinsert");
Iterator<Element> it = Dataelement.getChildren("myobject");
while (it.hasNext() && !"Propert6".equals(it.next().getAttribute("name"))) {
// advance the iterator.
}
it.add(toinsert);
或者,您可以找到具有正确 属性 的元素,例如使用 XPath.....
XPathFactory xpf = XPathFactory.instance();
XPath<Element> xp = xpf.compile("//myobject[@name='propert6']", Filters.element());
Element propert6 = xp.evaluateFirst(Dataelement);
Element toinsert = new Element("toinsert");
Element parent = toinsert.getParent();
parent.addContent(parent.indexOf(propert6), toinsert);
我有一个 XML 文档,我想使用现有元素的名称和属性在特定位置(索引)添加一个元素,所以我必须找到这个特定元素的索引。
示例:
<root org="667">
<myobject name="Propert1">KS7799</p>
<myobject name="Propert2">88YSJJ</p>
<myobject name="Propert3">KKQ87</p>
<myobject name="Propert4">122ZKK</p>
<myobject name="Propert5">LQLX9</p>
<myobject name="Propert6">LLQS8</p> // I want to get index of this element
<myobject name="Propert7">LLLX9</p>
<myobject name="Propert8">LLSSKNX9</p>
<myobject name="Propert9">MQLKSQ9</p>
<myobject name="Propert10">MLKLKQSQ9</p>
</root>
我的代码:
for (Element ObjectElement : Dataelement.getChildren("myobject")) {
Attribute nameattr_class = ObjectElement.getAttribute("name");
if (nameattr_class.getValue().equals("Propert6")) {
// I want to index of this element
}
}
如果您知道要在其后插入的元素,您可以做一些事情....
你可以在集合上得到一个迭代器,然后添加元素....像:
Element toinsert = new Element("toinsert");
Iterator<Element> it = Dataelement.getChildren("myobject");
while (it.hasNext() && !"Propert6".equals(it.next().getAttribute("name"))) {
// advance the iterator.
}
it.add(toinsert);
或者,您可以找到具有正确 属性 的元素,例如使用 XPath.....
XPathFactory xpf = XPathFactory.instance();
XPath<Element> xp = xpf.compile("//myobject[@name='propert6']", Filters.element());
Element propert6 = xp.evaluateFirst(Dataelement);
Element toinsert = new Element("toinsert");
Element parent = toinsert.getParent();
parent.addContent(parent.indexOf(propert6), toinsert);