質問

私は現在、JDOMを使用して単純なXML解析を行っていますが、タイプは何も安全ではないようです。内蔵のJava Dom Parserを使用することで同様の問題がありました。

例えば、 XPath.selectNodes 取ります Object その議論と生のリストを返すように、それはちょうど少しJava 1.1を感じます

Java用の一般化されたXMLおよびXPathライブラリはありますか、それともXPathクエリをタイプセーフで実行することができない理由がありますか?

役に立ちましたか?

解決

HTMLのCSSセレクターに精通している場合は、それを知っておくと良いかもしれません jsoup XMLもサポートします。


アップデート: :わかりました、それは明らかに非常に物議を醸す答えを下げて与えられました。ただし、必要なのはノード値を選択するだけで、Xpathよりも簡単で冗長になる可能性があります。 JSoup APIは非常に滑らかです。もう少し具体的な例を挙げましょう。次のように見えるXMLファイルがあると仮定してください。

<?xml version="1.0" encoding="UTF-8"?>
<persons>
    <person id="1">
        <name>John Doe</name>
        <age>30</age>
        <address>
            <street>Main street 1</street>
            <city>Los Angeles</city>
        </address>
    </person>
    <person id="2">
        <name>Jane Doe</name>
        <age>40</age>
        <address>
            <street>Park Avenue 1</street>
            <city>New York</city>
        </address>
    </person>
</persons>

次に、次のように移動できます。

Document document = Jsoup.parse(new File("/persons.xml"), "UTF-8");

Element person2 = document.select("person[id=2]").first();
System.out.println(person2.select("name").text());

Elements streets = document.select("street");
for (Element street : streets) {
    System.out.println(street.text());
}

出力

Jane Doe
Main street 1
Park Avenue 1

更新2: :2012年3月にリリースされたJSoup 1.6.2以来、XML ParsingはJSOUP APIによって正式にサポートされています。

他のヒント

AFAIK JavaのすべてのXMLクエリは非タイプセーフであり、ほとんどはJava 1.3互換です。それは私のお気に入りのパーサー/ジェネレーターがです XMLプルパーサー(XMLPP) スタイルパーサー。 Javaには、XMLPPライブラリとほぼ同じ1.6を使用している場合、JavaにはXMLStreamReaderとXMLStreamWriterがあると思います。私は特に、ストリームリーダーを取得してそこから引っ張ってFooオブジェクトを返す方法GetFooを書くことができるのが好きです。 DomとSaxの間で最高のものです。私はそれが一部の人によってStaxと呼ばれるかもしれないと思います。
私は少しランブルを取得しているので、私は今やめています

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top