2

次のような国の XML リストがあります。

<countries>
  <country>
    <code>CA</code>
    <country>Canada</country>
  </country>
  ... etc...
</countries>

ノードを選択してそれらを反復したいので、使用します

path "/countries/*"

そしてJavaScriptで:

nodes = xml.evaluate(path, xml, null, XPathResult.ANY_TYPE, null);

反復すると、最初と 3 番目のノードが空白 (改行) であることがわかります。2 番目と 4 番目のノードは、必要な実際の XML です。

XPath を使用して空白ノードを無視するにはどうすればよいですか? 私は XML 部分にのみ関心があり、XML に改行が含まれるかどうかは保証できません。

4

1 に答える 1

0

このような単純なプログラムを使用することはできませんか?

NodeList countries = (NodeList) xpath.evaluate("//countries/country",
    builder.parse(inputStream),
    XPathConstants.NODESET);

for (int i = 0; i < countries.getLength(); i++) {
    Node country = notes.item(i);
    String code = (String) xpath.evaluate("./code/text()", country,
        XPathConstants.STRING);
    String name = (String) xpath.evaluate("./country/text()", country, 
        XPathConstants.STRING);

    System.out.println(String.format("%s has country code %s", name, code));
}

どの入力で

<countries>
  <country>
    <code>CA</code>
    <country>Canada</country>
  </country>
  <country>
    <code>FR</code>
    <country>France</country>
  </country>
  <country>
    <code>IT</code>
    <country>Italy</country>
  </country>
  <country>
    <code>US</code>
    <country>United States</country>
  </country>
</countries>

出力

Canada has country code CA
France has country code FR
Italy has country code IT
United States has country code US
于 2012-07-28T12:15:41.750 に答える