我正在尝试从XML中获取iframe src,以便在 WebView 中显示它。为此,我使用XPath获取值。目前我正在尝试解析this iframe。但我根本没有任何价值。
我试过这个 XPath :
"//GoodreadsResponse/book/reviews_widget/iframe[@id=\"the_iframe\"]/@src/text()"
我的XPath是否错误获取此iframe src?完整的xml是here。
答案 0 :(得分:1)
也许另一个答案会纠正我,但我认为XPath不会解析CDATA
部分内的数据。
但是,您可以分两步完成此操作。
//GoodreadsResponse/book/reviews_widget
CDATA
部分。它不是XML(多个根元素),但我们可以添加一个父元素,然后解析它。我将包含一个.NET代码段,希望您可以转换。
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);