2014-10-28 3 views
1

다음 코드는 JDOM을 사용하여 첫 번째 요소를 검색하려고하는데 다음 코드가 있는데 예외가 있으면 nullpointer exception.please가 도움이됩니다. 여기 JDom을 사용하여 접두사가있는 자식 요소를 검색하는 방법

<db1:customer xmlns:db1="http://www.project1.com/db1"> 
<db1:customerId>22</db1:customerId> 
<db1:customerName>PRASAD44</db1:customerName> 
<db1:address>Chennai</db1:address> 
<db1:email>[email protected]</db1:email> 
<db1:lastUpdate>2014-08-01T00:00:00+05:30</db1:lastUpdate> 
<db1:nameDetail>BSM_RESTeter</db1:nameDetail> 
<db1:phoneBiz>9916347942</db1:phoneBiz> 
<db1:phoneHome>9916347942</db1:phoneHome> 
<db1:phoneMobile>944990031</db1:phoneMobile> 
<db1:rating>22</db1:rating> 
</db1:customer> 

내가

SAXBuilder builder = new SAXBuilder(); 
    File xmlFile = new File("CommonFiles/file.xml"); 
    Document doc = (Document) builder.build(xmlFile); 
    Element rootNode = doc.getRootElement(); 
    Element customerid = rootNode.getChild("sure:customerId"); 
    System.out.println("customerid ======"+customerid); 

인쇄 문 표시 널, 뭐하는 거지입니다.

답변

1

네임 스페이스가 포함 된 XML을 처리 할 때는 해당 문서에 적합한 Namespace 인스턴스를 사용해야합니다. 이 경우, 당신은 :

<db1:customer xmlns:db1="http://www.project1.com/db1"> 

네임 스페이스는 여기 http://www.project1.com/db1하고 접두어는 db1입니다. 당신이 문서에서 사용 내용을 검색 할 때 지금

Namespace db1 = Namespace.getNamespace("db1", "http://www.project1.com/db1"); 

, : 당신이 가진 네임 스페이스에 대한 참조를 creaate 수 JDOM에서

Element customerid = rootNode.getChild("customerId", db1); 

참고하면 사용하여 콘텐츠를 그 네임 스페이스 개체, 요소의 접두사가 아닙니다 ("customerId"에 대한 "db1 :"접두어가 없습니다.)

+0

완벽합니다. 감사합니다. rolfl.Xml 파일을 업데이트 한 후 질문이 하나 더 있습니다. g 업데이트 된 파일에서 사용할 수 없어야하는 헤더 {}. JDom을 사용하여이를 방지하는 방법이 있습니까 – Praveen

+0

XMLOutputter에서 Format을 사용하여 Format.getPrettyFormat()과 같은 형식을 가져온 다음 setOmitDeclaration (true)를 호출합니다. [this this] (http://jdom.org/docs/apidocs/org/jdom2) /output/Format.html#setOmitDeclaration(boolean)) – rolfl

+0

작동했습니다. 감사합니다. rolfl – Praveen

관련 문제