2012-11-26 36 views
8

अपवाद फेंक दिया एक्सएमएल टैग पेट है जब है,Jsoup: SelectorParseException जब एक्सएमएल टैग में पेट के

अपवाद:

org.jsoup.select.Selector $ SelectorParseException: 'डब्ल्यू क्वेरी को पार्स नहीं कर सका: आर ': पर अप्रत्याशित टोकन': आर '

एक्सएमएल:

<w:r> 
<w:rPr> 
    <w:rStyle w:val="jid"/> 
</w:rPr> 
<w:t>AN</w:t> 
</w:r> 

जावा कोड:

org.jsoup.nodes.Document doc = Jsoup.parse(documentXmlString); 

यहाँ documentXmlString एक्सएमएल

उत्तर

1

मैं इस्तेमाल किया,

documentXmlString = documentXmlString.replaceAll("w:","w"); 
+0

अच्छा कार्य! ऊपर उठाया !! यह वास्तव में स्रोत एक्सएमएल के साथ समस्या थी। कृपया मेरा उत्तर देखें और यदि आपके कोई प्रश्न या चिंता हैं तो मुझे बताएं .. –

-1

ऊपर निर्दिष्ट है JSoup एक एचटीएमएल नहीं एक XML पार्सर है। एक्सएमएल के लिए आप जेएक्सबी या सैक्सन या एक्सस्ट्रीम का उपयोग कर सकते हैं।

+0

चेकआउट http://jsoup.org/news/release-1.6.2 – Linda

+0

ओह धन्यवाद :) मुझे यह नहीं पता था, इसलिए इसमें एक बग हो सकता है, या सरल एक्सएमएल पार्सर बहुत आसान है :) – fatfredyy

2

हालांकि अपने पैचवर्क आप के लिए काम किया है .. मैं नाम स्थान पर ज्ञान देने के लिए चाहते हैं!

आपके XML में w: वास्तव में नामस्थान उपसर्ग कहा जाता है। और नेम्सस्पेस उपसर्ग का उपयोग करने के लिए इसे रूट नोड में घोषित किया जाना है! 1+ चूंकि घोषणा स्रोत आपके स्रोत एक्सएमएल में गायब था! पार्सर एक त्रुटि फेंक रहा था! एक्सएमएल में नेमस्पेस को परिभाषित करने का तरीका नीचे है! मैंने अपना खुद का एक्सएमएल सही कर दिया है, मुझे यकीन है कि यह अब त्रुटि नहीं होगी!

<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/> पर नामस्थान उपसर्ग उपयोग नहीं कर सकते !! क्योंकि नेमस्पेस उपसर्ग डब्ल्यू का दायरा तत्व <r> और उसके बच्चे (पोते) केवल तत्व तक है!


1+: तत्व जो नाम स्थान घोषित किया जाता है के तहत .. नाम स्थान .. जड़ के नीचे की घोषणा नाम स्थान नाम स्थान वैध/XML दस्तावेज में सभी तत्वों के लिए उपलब्ध बनाता ही है और अपने बच्चे नोड्स के लिए मान्य होगा।

+0

धन्यवाद बहुत अरविंद। लेकिन मैं नाम इनपुट के साथ अपनी इनपुट एक्सएमएल फ़ाइल नहीं बदल सकता। हालांकि जानकारी उपयोगी है। – Linda

+0

@ केट, मैंने अनुमान लगाया! कुंआ। खुशी है कि आपने इसे उपयोगी पाया :) –

17

बस ":" के साथ ":" को प्रतिस्थापित करें

doc.select("w|r"); 

मैं जेएसओपी 1.5.2 का उपयोग कर रहा हूं।

+0

यदि सामग्री में ":" है, तो यह काम नहीं कर सकता है। उदाहरण: http://www.google.com। यदि आप इसे प्रतिस्थापित करते हैं, तो यह http | //www.google.com –

+0

बन जाता है जिससे मेरी समस्या हल हो जाती है। धन्यवाद। –

+0

एपीआई दस्तावेज़ों में चेहरे में: https://jsoup.org/apidocs/org/jsoup/select/Selector.html –