【问题标题】:Java library using css selectors to parse XML使用 css 选择器解析 XML 的 Java 库
【发布时间】:2011-10-18 21:05:32
【问题描述】:

是否有类似 JAVA/Android 库的 jQuery 使用 CSS 选择器来解析 XML?

喜欢:

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

Chainability 也是我在寻找的东西,和 jQuery 一样......

我希望这存在!

【问题讨论】:

    标签: java android xml css-selectors chainability


    【解决方案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】:

      由于 JsoupJericho 等其他库中存在一些错误,因此与我的预期不同,

      我写了一个扩展 org.xml.sax.helpers.DefaultHandler 的类来解析 XML。然后,我从 Jsoup 中编写了另外两个类似于 ElementElements 的类,其中包含两个名为 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

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2018-08-19
            • 1970-01-01
            • 1970-01-01
            • 2011-02-06
            • 1970-01-01
            • 1970-01-01
            • 2011-01-17
            相关资源
            最近更新 更多