1

Java DOM パーサーと Apache JxPath を使用して XML ファイルを解析する方法の簡単な例が必要です。私は DOM パーサー技術を認識していますが、今はソースに JxPath を統合しようとしています。

ネットワークで検索しましたが、実際の例が見つかりません。

テストのために、私はこのxmlを持っています:

<?xml version="1.0" encoding="UTF-8"?>
<catalog>
  <cd gender="male">
    <title>Empire Burlesque</title>
    <artist>Bob Dylan</artist>
    <country>USA</country>
    <company>Columbia</company>
    <price>10.90</price>
    <year>1985</year>
  </cd>
  <cd gender="male">
    <title>Hide your heart</title>
    <artist>Bonnie Tyler</artist>
    <country>UK</country>
    <company>CBS Records</company>
    <price>9.90</price>
    <year>1988</year>
  </cd>
</catalog>

Java コード:

File file = new File("Files/catalog.xml");
DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance();
try
{
    DocumentBuilder docBuilder = docFactory.newDocumentBuilder();
    Document doc = docBuilder.parse(file);

    NodeList nList = doc.getElementsByTagName("cd");
    for(int j = 0; j<nList.getLength(); j++){

        Element element = (Element)nList.item(j);
        System.out.println(element.getElementsByTagName("artist").item(0).getTextContent() + "\n");

    }

}
catch (ParserConfigurationException | SAXException | IOException e)
{
    e.printStackTrace();
}

クラスContainer 、 DocumentContainer 、および JXPathContextについて読んだことがありますが、特定の作業例を含むいくつかのヘルプまたは Web ソースに感謝します。

4

3 に答える 3

1

JXPath が必要なものであると確信していますか? JXPath は、Java オブジェクト ツリーやマップなど、必ずしも XML ではないものに対して XPath 式を使用するための Apache ライブラリです。XML から DOM を作成した場合は、それにデフォルトの Java XPath 実装を使用することもできます。ここを参照してください: https://docs.oracle.com/javase/7/docs/api/javax/xml/xpath/XPathFactory.html。実際、DOM には要素名のようなメタデータElementを含むオブジェクトのツリーがあるため、JXpath はここではうまく機能しません。Textしたがって、 のような式を取得する代わりに、 のような式//cd/artistを取得します//*[@tagName='cd']/childNodes[@tagName='artist']

さて、なんらかの理由で、事前に知らなくても、Java オブジェクト ツリーまたは DOM のいずれかで XPath 式を使用できるようにする必要がある場合、その場合、JXPath はbeckyang が回答で説明した方法: JXPath DocumentContainer を使用してドキュメントにアクセスします。

于 2017-02-17T16:59:28.523 に答える