9

CSSセレクターを使用してXMLを解析するJAVA/AndroidライブラリのようなjQueryはありますか?

好き :

String desc = myXML.find("bloc[type=pro]").get(0).attr("description");

jQueryと同じように、連鎖性も私が探しているものです...

私はこれが存在することを願っています!

4

5 に答える 5

9

Jsoupは当初、CSS セレクターをサポートする HTML パーサーとして設計されていましたが、データを操作することではなく、データを抽出することが唯一の目的である場合、XML ドキュメントに対しても適切に機能します。

Document document = Jsoup.parse(xmlString);
String desc = document.select("bloc[type=pro]").get(0).attr("description");
// ...

ご覧のとおり、構文は質問で使用したものとほぼ同じです。

于 2011-08-03T22:17:38.710 に答える
3

Apache Jerichoはあなたが探しているものです。

あなたの例は次のようになります

String desc = source.getFirstElement( "type", "pro" ).getAttributeValue( "description" );

HTML を jericho で解析できるのは魅力なので、うまく構造化された XML の方がさらに簡単だと思います。

于 2011-08-03T09:15:46.267 に答える
2

その問題を解決するために XPath を使用します。JDOM のような XML 解析は、XPath に問題ありません。おそらくjQueryはXPathがどのように機能するかを確認します:p

//bloc[@type="pro"][1]/@description

Xpath インデックスは 0 ではなく 1 から始まります

https://www.w3schools.com/xml/xpath_syntax.asp

于 2011-08-09T14:05:15.003 に答える
2

JsoupJerichoなどの他のライブラリにはいくつかのバグがあるため、期待していたものとは異なります。

org.xml.sax.helpers.DefaultHandlerXMLを解析するクラス拡張を作成しました。次に、CSS3 セレクターを処理し、属性値を返す2 つの関数が呼び出される JsoupElementに似た 2 つのクラスを作成しました。Elementsfindattr

私は今、そのコードをきれいにしてコメントしています...興味のある人のために後でライブラリを投稿します。

xmlDoc.find("bloc[type=Pro]>act").attr("label");

jQueryのように可能になりました!


編集 !

興味のある人のためのコードにアクセスするためのリンクは次のとおりです: Google Code Project


GitHub への移動: https://github.com/ChristopheCVB/JavaXMLQuery

于 2011-08-09T15:03:39.530 に答える