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

당신이 후 삽입 할 요소를 알고 있다면, 당신이 할 수있는 몇 가지 .... 거기

컬렉션에 대한 반복자를 가져올 수 있으며 요소를 추가하면됩니다. 예 :

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);