वर्तमान में, मैं एक आरएसएस डेटा फ़ीड से एक्सएमएल को पार्स करने के लिए XMLInputFactory और XMLEventReader का उपयोग कर रहा हूं। विवरण में, इसमें > और < के उपयोग में html टैग शामिल हैं। जावा इसे वास्तविक टैग के रूप में पढ़ता है और यह सोचता है कि विवरण का अंत है, इसलिए यह कट जाता है और अगले तत्व पर जाता है। मैं टैग को पार्सिंग से कैसे निकाल सकता हूं?

0
Pius Lee 18 अगस्त 2020, 22:39

2 जवाब

सबसे बढ़िया उत्तर

मैं पुल पार्सर (XMLEventReader) का अधिक उपयोग नहीं करता, लेकिन मेरा मानना ​​है कि, SAX पार्सर की तरह, यह एक टेक्स्ट नोड को Characters घटनाओं के अनुक्रम के रूप में रिपोर्ट कर सकता है, न कि एकल के रूप में घटना, और यह उन्हें संयोजित करने के लिए आवेदन पर निर्भर है। सबसे अधिक संभावना है कि पार्सर द्वारा सामग्री को विभाजित करने के लिए चुनने की संभावना इकाई सीमाओं पर है, ताकि संस्थाओं का विस्तार करते समय चरित्र डेटा की थोक प्रतिलिपि बनाने से बचा जा सके।

0
Michael Kay 19 अगस्त 2020, 10:37

आप प्रत्येक > और < टैग को एक विशिष्ट विशिष्ट लेबल से अस्थायी रूप से बदल सकते हैं जिसे आप जानते हैं। फिर, अपनी पार्सिंग करें, और उन्हें > और < टैग के साथ फिर से बदलें, जब आप अपनी पार्सिंग के साथ कर रहे हों, जैसे निम्न कोड में।

String original = "<container>&gt;This&lt; is a &gt;test&lt;</container>";
String newStr = original.replace("&gt;", "_TMP_CHARACTER_G_").replace("&lt;", "_TMP_CHARACTER_L_");
System.out.println(original + "\n" + newStr);
// Print <container>&gt;This&lt; is a &gt;test&lt;</container>
// and <container>_TMP_CHARACTER_G_This_TMP_CHARACTER_L_ is a _TMP_CHARACTER_G_test_TMP_CHARACTER_L_</container>
        
// [Do your parsing here]
        
String theTagYouWant = newStr;
String theConvertedTag = theTagYouWant.replace("_TMP_CHARACTER_G_", "&gt;").replace("_TMP_CHARACTER_L_", "&lt;");
System.out.println(theConvertedTag);
// Print the original String <container>&gt;This&lt; is a &gt;test&lt;</container>
-1
xam4lor 18 अगस्त 2020, 23:06