[英]org.jsoup.select.Selector$SelectorParseException: Could not parse query
[英]Jsoup : SelectorParseException when colon in xml tag
當xml標記有冒號時拋出異常,
例外:
org.jsoup.select.Selector $ SelectorParseException:無法解析查詢'w:r':':r'處的意外標記
XML:
<w:r>
<w:rPr>
<w:rStyle w:val="jid"/>
</w:rPr>
<w:t>AN</w:t>
</w:r>
Java代碼:
org.jsoup.nodes.Document doc = Jsoup.parse(documentXmlString);
這里documentXmlString具有上面指定的xml
只需將“:”替換為“|”
doc.select("w|r");
我正在使用Jsoup 1.5.2。
雖然你的拼湊工作對你有用..我想提供關於命名空間的知識!
w:
在您的XML中實際上稱為名稱空間前綴。 要使用neamespace前綴,必須在根節點中聲明! 1+由於源XML中缺少聲明部分! 解析器拋出錯誤! 下面是在XML中定義命名空間的方法! 我已經更正了你自己的XML,我敢打賭它現在不會錯誤!
<w:r xmlns:w="http://www.w3.org/SomeNamespace">
<w:rPr>
<w:rStyle w:val="jid"/>
</w:rPr>
<w:t>AN</w:t>
</w:r>
附加信息:
命名空間有自己的范圍! 在下面的例子中:
<root>
<w:r xmlns:w="http://www.w3.org/SomeNamespace">
<w:rPr>
<w:rStyle w:val="jid"/>
</w:rPr>
<w:t>AN</w:t>
</w:r>
<someotherElement>
<dummychild/>
</someotherElement>
在上面的示例中,您不能在<someotherElement>
或<dummychild/>
上使用名稱空間前綴!! 因為命名空間前綴w的范圍只是元素<r>
及其子(孫)的唯一!
1+:聲明Namespace的元素。命名空間對其自身及其子節點有效。在root下聲明命名空間使命名空間對XML Document中的所有元素有效/可用。
我用了,
documentXmlString = documentXmlString.replaceAll("w:","w");
JSoup是一個HTML而不是XML解析器。 對於XML,您可以使用JAXB或SAXON或Xstream。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.