【问题标题】:Getting Iframe src from a XML using Xpath使用 Xpath 从 XML 获取 iframe src
【发布时间】:2016-02-07 17:02:02
【问题描述】:

我正在尝试从 XML 中获取 iframe src,以便在 WebView 中显示它。为此,我使用 XPath 来获取值。目前我正在尝试解析this iframe。但我根本没有得到任何价值。

我试过这个XPath

"//GoodreadsResponse/book/reviews_widget/iframe[@id=\"the_iframe\"]/@src/text()"

获取此 iframe src 时我的 XPath 是否错误?完整的xml是here

【问题讨论】:

    标签: android xml xpath


    【解决方案1】:

    也许另一个答案会纠正我,但我认为 XPath 不会解析 CDATA 部分中的数据。

    不过,您可以分两步完成。

    1. 抓取//GoodreadsResponse/book/reviews_widget的文字部分
    2. 这是之前的CDATA 部分。它不是 XML(多个根元素),但我们可以添加一个父元素,然后对其进行解析。

    我将包含一个 .NET sn-p,希望您可以转换它。

        XmlNode node = document.SelectSingleNode("//GoodreadsResponse/book/reviews_widget");
        String cdataText = node.InnerText;
    
        // The cdataText here isn't quite XML, as it has multiple roots.
        // let's surround it by a single root element
        String xml = "<root>" + cdataText + "</root>";
    
        XmlDocument innerDoc = new XmlDocument();
        innerDoc.LoadXml(xml);
    
        XmlNode srcAttr = innerDoc.SelectSingleNode("/root/div/iframe[@id=\"the_iframe\"]/@src");
    
        // This prints out https://www.goodreads.com/api/reviews_widget_iframe?did=DEVELOPER_ID&format=html&isbn=0307277674&links=660&min_rating=&review_back=fff&stars=000&text=000
        Console.WriteLine(srcAttr.Value);
    

    【讨论】:

    • 我已经成功地使用你的技术在java中做到了。谢谢你的主意。 @jglouie
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-14
    • 1970-01-01
    • 1970-01-01
    • 2011-12-26
    • 1970-01-01
    相关资源
    最近更新 更多