-2

以下に示すようなXMLファイルのコンテンツがあります。

<FileIndex>
<Document SEQUENCE="0" FILENAME="A.xml"  />
<Document SEQUENCE="1" FILENAME="B.htm"  />
<Document SEQUENCE="2" FILENAME="C.htm"  />
<Document SEQUENCE="3" FILENAME="D.htm"  />

属性SEQUENCEの値が「1」に等しい属性FILENAMEの値を取得したい。どちらが好ましい方法ですか?SAX、DOM、XPath?とそれを実装する方法は?

4

1 に答える 1

1

必要なものは次のとおりです。

  @Test
  public void test() throws Exception
  {
    String xml =
        "<FileIndex>\n" + 
        "<Document SEQUENCE=\"0\" FILENAME=\"A.xml\"  />\n" + 
        "<Document SEQUENCE=\"1\" FILENAME=\"B.htm\"  />\n" + 
        "<Document SEQUENCE=\"2\" FILENAME=\"C.htm\"  />\n" + 
        "<Document SEQUENCE=\"3\" FILENAME=\"D.htm\"  />\n" + 
        "</FileIndex>";
    XPath xp = XPathFactory.newInstance().newXPath();
    System.out.println(xp.evaluate("/FileIndex/Document[@SEQUENCE='1']/@FILENAME", new InputSource(new StringReader(xml)), XPathConstants.STRING));
  }

このような小さな XML には、XPath を使用するのが最適です

于 2012-04-11T09:04:13.927 に答える