使用 css 选择器解析 XML 的 Java 库
Posted
技术标签:
【中文标题】使用 css 选择器解析 XML 的 Java 库【英文标题】:Java library using css selectors to parse XML 【发布时间】:2011-10-18 21:05:32 【问题描述】:是否有类似 JAVA/android 库的 jQuery 使用 CSS 选择器来解析 XML?
喜欢:
String desc = myXML.find("bloc[type=pro]").get(0).attr("description");
Chainability 也是我在寻找的东西,和 jQuery 一样......
我希望这存在!
【问题讨论】:
【参考方案1】:虽然最初设计为支持 CSS 选择器的 html 解析器,但如果您的唯一目的是提取数据,而不是操作,Jsoup 也适用于 XML 文档> 数据。
Document document = Jsoup.parse(xmlString);
String desc = document.select("bloc[type=pro]").get(0).attr("description");
// ...
您看,语法几乎与您在问题中的语法相同。
【讨论】:
当我这样做时:Elements xmlBlocs = doc.select("bloc");
然后xmlBlocs.get(0).select("place")
,我从其他集团元素获得 place... 为什么?
我无法重现您的问题。也许您的 XML 格式不正确,或者您没有运行您认为正在运行的代码?【参考方案2】:
Apache Jericho 是您正在寻找的。
你的例子看起来像
String desc = source.getFirstElement( "type", "pro" ).getAttributeValue( "description" );
用 jericho 解析 HTML 是一种魅力,所以我想对于结构良好的 XML 来说它更容易。
【讨论】:
【参考方案3】:由于 Jsoup 和 Jericho 等其他库中存在一些错误,因此与我的预期不同,
我写了一个扩展 org.xml.sax.helpers.DefaultHandler
的类来解析 XML。然后,我从 Jsoup 中编写了另外两个类似于 Element
和 Elements
的类,其中包含两个名为 find
的函数,用于处理 CSS3 选择器,attr
用于返回属性值。
我现在正在清理和评论该代码...稍后我会为感兴趣的人发布该库。
xmlDoc.find("bloc[type=Pro]>act").attr("label");
现在可以像在 jQuery 中一样!
编辑!
这里是访问代码的链接,供感兴趣的人使用:Google Code Project
移至 GitHub:https://github.com/ChristopheCVB/JavaXMLQuery
【讨论】:
【参考方案4】:我使用 XPath 来解决这个问题。像 JDOM 这样的 XML 解析对 XPath 来说是可以的。也许 jQuery 看看 XPath 是如何工作的:p
//bloc[@type="pro"][1]/@description
Xpath 索引从 1 开始,而不是 0
https://www.w3schools.com/xml/xpath_syntax.asp
【讨论】:
【参考方案5】:droidQuery 库可以完成您正在寻找的许多事情。虽然语法略有不同,但您可以:
使用链式 jQuery 样式的命令获取视图属性,例如:
CharSequence text = $.with(this, R.id.myTextView).attr("text");
解析 XML:
Document dom = $.parseXML(myXMLString);
如果您是 jQuery 的粉丝,您会很高兴看到它提供的几乎所有功能都包含在 droidQuery 中,尽管语法可能不同有时,它的主要目标是在语法上尽可能接近 jQuery。
【讨论】:
以上是关于使用 css 选择器解析 XML 的 Java 库的主要内容,如果未能解决你的问题,请参考以下文章