2012-03-05 3 views
1

以下のXML構造です -のJava-XPathは親子(S)構造を生成するために

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

Javaで次のような出力を得るために、XPathクエリになりますどのような -

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

右を今私が使っているJavaコードは同じことをしていません。 Plsは以下のJavaコードを見つける -

....... 
....... 
....... 
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

@ジョン:どうぞよろしくお願いいたします。 –

関連する問題