2017-11-01 13 views
1

私はXML文書を持っており、既存の要素の名前と属性を使用して特定の位置(インデックス)に要素を追加したいので、この特定の要素。JDOM 2特定の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 
       } 


     } 

答えて

0

あなたが後に挿入したい要素を知っている場合は、あなたが行うことができますいくつかのものがある....

あなたはコレクション上のイテレータを取得することができますし、要素を追加するだけです.... like:

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); 
関連する問題