1

以下はXMLファイルです-

<Country>
  <Group>
    <C>Tokyo</C>
    <C>Beijing</C>
    <C>Bangkok</C>
  </Group>
  <Group>
    <C>New Delhi</C>
    <C>Mumbai</C>
  </Group>
  <Group>
    <C>Colombo</C>
  </Group>
</Country>

JavaとXPathを使用して都市の名前をテキストファイルに保存したい-以下は、必要な処理を実行できないJavaコードです。

.....
.....
DocumentBuilderFactory domFactory = DocumentBuilderFactory.newInstance();
domFactory.setNamespaceAware(true); 
DocumentBuilder builder = domFactory.newDocumentBuilder();
Document doc = builder.parse("Continent.xml");
XPath xpath = XPathFactory.newInstance().newXPath();
// XPath Query for showing all nodes value
XPathExpression expr = xpath.compile("//Country/Group");
Object result = expr.evaluate(doc, XPathConstants.NODESET);
NodeList nodes = (NodeList) result;
BufferedWriter out = new BufferedWriter(new FileWriter("Cities.txt"));
Node node;
for (int i = 0; i < nodes.getLength(); i++) 
{
    node = nodes.item(i);
    String city = xpath.evaluate("C",node);
    out.write(" " + city + "\r\n");
}
out.close();
.....
.....

誰かが必要な出力を取得するのを手伝ってもらえますか?

4

1 に答える 1

1

それがあなたが求めていたものだから、あなたは最初の都市だけを手に入れています。最初のXPATH式は、すべてのGroupノードを返します。これらを繰り返し、CそれぞれGroupに関連するXPATHを評価して、単一の都市を返します。

最初のXPATHをに変更し//Country/Group/C、2番目のXPATHを完全に削除します。最初のXPATHによって返される各ノードのテキスト値を出力するだけです。

すなわち:

XPathExpression expr = xpath.compile("//Country/Group/C");
...
for (int i = 0; i < nodes.getLength(); i++) 
{
    node = nodes.item(i);
    out.write(" " + node.getTextContent() + "\n");
}
于 2012-04-18T06:16:23.457 に答える