2011-08-26 3 views
1

새 컴퓨터를 원하는 컴퓨터 수준에 삽입하는 코드입니다. 나는 (ggss, 97653, XYZ)xml의 dom4j를 사용하여 지정된 위치에 새 노드 추가

예상 XML insertNewNode를 호출 할 경우

<credentials> 
<machine name="xyz"> 
<cred-pairs> 
<cred-pair> 
<login>asad</login> 
<password>12345</password> 
</cred-pair> 
<cred-pairs> 
</machine> 
<machine name="pqr"> 
<cred-pair> 
<cred-pair> 
<login>ssdas</login> 
<password>12345</password> 
</cred-pair> 
<cred-pairs> 
</machine> 
</credentials> 

:

Document insertNewNode(String loginId,String pass,String machine_name) 
{ 
List<?> list1 = document.selectNodes("//machine/@name"); 
Iterator<?> itr=list1.iterator(); 
while(itr.hasNext()){ 
Attribute attribute=(Attribute)itr.next(); 
if(attribute.getValue().equals(machine_name)) 
{ 
    List<?> list1 = document.selectNodes("//machine"); 
    Iterator<?> iter=list.iterator(); 
    while(iter.hasNext()){ 
    Element credPairs=(Element)iter.next(); 
    Element credPair =credPairs.addElement("cred-pair"); 
    Element login =credPair.addElement("login"); 
    element.setText(loginId); 
    Element password =credPair.addElement("password"); 
    element.setText(pass); 

} 

} 
} 
} 

원본 XML

<credentials> 
<machine name="xyz"> 
    <cred-pairs> 
    <cred-pair> 
    <login>asad</login> 
    <password>12345</password> 
    </cred-pair> 
**<cred-pair> 
    <login>ggss</login> 
    <password>97653</password> 
    </cred-pair>** 
    <cred-pairs> 
</machine> 
<machine name="pqr"> 
    <cred-pair> 
    <cred-pair> 
    <login>ssdas</login> 
    <password>12345</password> 
    </cred-pair> 
    <cred-pairs> 
</machine> 
</credentials> 

하지만 같은 출력을 얻고있다 :

<credentials> 
<machine name="xyz"> 
    <cred-pairs> 
    <cred-pair> 
    <login>asad</login> 
    <password>12345</password> 
    </cred-pair> 
** <cred-pair> 
    <login>ggss</login> 
    <password>97653</password> 
    </cred-pair>** 
    <cred-pairs> 
</machine> 
<machine name="pqr"> 
    <cred-pair> 
    <cred-pair> 
    <login>ssdas</login> 
    <password>12345</password> 
    </cred-pair> 
**<cred-pair> 
    <login>ggss</login> 
    <password>97653</password> 
    </cred-pair> 
    <cred-pairs>** 
</machine> 
</credentials> 

답변

1

들여 쓰기 후에 나는 XML 형식이 올바르지 않다는 것을 알았습니다. </machine> 직전에 <cred-pairs> 개봉 태그가 하나 있는데 그 위치에서 불법입니다. 복사/붙여 넣기 오류 일 수 있습니다.

정확한 시스템 이름 속성을 찾은 후에는 모두 시스템 노드를 선택하고 모든 시스템 노드에 신임을 추가하십시오. 대신 당신이 속성하지만 컴퓨터 이름에 대한 자격 요소를 선택하지 않아야

+0

감사를

List<Element> machines = document.selectNodes(String.format("//machine[@name='%s']", machine_name); for (Element machine:machines) { Element credPairs=(Element)iter.next(); Element credPair =credPairs.addElement("cred-pair"); Element login =credPair.addElement("login"); login.setText(loginId); Element password =credPair.addElement("password"); password.setText(pass); machine.addElement(credPairs); } 

안된지만 작동합니다 (또는 당신에게 방향을 보여을)를 lot..You 내 day..Andreas_D 저장된 – user896456

관련 문제