2012-03-05 6 views
1

다음은 XML 구조입니다 -자바 XPath를 생성하는 부모 - 자식 (들) 구조

<Projects> 
    <Project> 
    <Name>Web Site Designing</Name> 
    <Members> 
     <MName>Jack</MName> 
     <MName>John</MName> 
     <MName>Jill</MName> 
    </Members> 
    </Project> 
    <Project> 
    <Name>Site Ranking</Name> 
    <Members> 
     <MName>Jack</MName> 
     <MName>James</MName> 
    </Members> 
    </Project> 
    <Project> 
    <Name>E-Mailing</Name> 
    <Members> 
     <MName>Matt</MName> 
    </Members> 
    </Project> 
<Projects> 

자바에서 다음과 같은 결과를 얻을 수는 XPath 쿼리 될 것입니다 무엇 -

Web Site Designing,Jack,John,Jill 
Site Ranking,Jack,James 
E-Mailing,Matt 

오른쪽 지금 내가 사용하고있는 Java 코드는 똑같은 것을하지 않습니다. Pls는 아래의 자바 코드 찾기 -

....... 
....... 
....... 
String pName = ""; 
String mName = ""; 
Document doc = builder.parse("Project.xml"); 
XPath xpath = XPathFactory.newInstance().newXPath(); 
XPathExpression expr = xpath.compile("//Projects/Project"); 
Object result = expr.evaluate(doc, XPathConstants.NODESET); 
NodeList nodes = (NodeList) result; 
BufferedWriter out = new BufferedWriter(new FileWriter("projInfo.txt")); 
Node node; 
for (int i = 0; i < nodes.getLength(); i++) 
{ 
    node = nodes.item(i); 
    pName = xpath.evaluate("Name",node); 
    mName = xpath.evaluate("Members/MName",node); 

    //Here's something worng 
    out.write(pName + "," + mName + "\r\n"); 
} 
out.close(); 
.......  

이 좋은 하루 되세요 JB를

답변

1

MNAME = xpath.evaluate ("회원/MNAME", 노드);

이것은 노드 목록을 반환하지만 다음 코드 라인 :

out.write(pName + "," + mName + "\r\n"); 

단일 문자열로 취급된다.

mName에 포함 된 모든 노드를 mName을 통해 반복 처리하는 것이 맞을 것입니다.

+0

oooppsss .. 네가 정확히 맞아 .. 고마워. :) – John

+0

@ 존 : 천만에. –