2011-03-03 6 views
5

मैं इस xml है:
<user>
<name>H &amp; M</name>
DocumentBuilder पार्स टूटता स्ट्रिंग जब हिट '&'

और मैं इसे इस कोड का उपयोग पार्स:


    DocumentBuilder documentBuilder = null; 
      Document document = null;

try { documentBuilder = DocumentBuilderFactory.newInstance() .newDocumentBuilder(); document = documentBuilder.parse(is); } catch (Exception e) { return result; } NodeList nl = document.getElementsByTagName(XML_RESPONSE_ROOT); if (nl.getLength() > 0) { resp_code = nl.item(0).getAttributes().getNamedItem( XML_RESPONSE_STATUS).getNodeValue(); if (resp_code.equals(RESP_CODE_OK_SINGLE)) { nl = document .getElementsByTagName(XML_RESPONSE_TAG_CONTACT); NodeList values = nl.item(i).getChildNodes();

आदि ..

जब मैं नोड मूल्य प्राप्त द्वारा: node.getNodeValue();

मैं केवल क्या मिल एम्परसेंड से पहले, भले ही एम्परसेंड बच रहा है

मैं पूरी स्ट्रिंग प्राप्त करना चाहते हैं: "एच & एम"

धन्यवाद

+1

डोम एक तत्व नोड को अपनी पाठ सामग्री को कई आसन्न पाठ नोड्स में तोड़ने की अनुमति देता है। हालांकि, जेडीके का तात्पर्य है कि इकाई संदर्भ नोड्स का उपयोग अंतर्निर्मित इकाइयों के लिए नहीं किया जाएगा, इसलिए मुझे नहीं पता कि यह क्यों हो रहा है। (हालांकि, सबसे अच्छा जवाब है: डोम का उपयोग न करें। जेडीओएम और एक्सओएम जैसे आसपास के बेहतर पेड़ मॉडल हैं) –

उत्तर

4

यह अपनी XML पर निर्भर करता है दस्तावेज़ का निर्माण किया गया था। विशेष रूप से, इसमें "एच & एम" में कई आसन्न टेक्स्ट नोड्स हो सकते हैं जबकि आपका कोड केवल एक होने की अपेक्षा करता है। इसके मूल्य प्राप्त करने से पहले nodeVariable.normalize() का उपयोग करने का प्रयास करें।

डोम पार्सर एपीआई के मुताबिक: "सामान्यीकृत() - इस नोड के नीचे उप-पेड़ की पूरी गहराई में सभी टेक्स्ट नोड्स को एक" सामान्य "रूप में, जहां केवल संरचना (उदाहरण के लिए, तत्व, टिप्पणियां, प्रसंस्करण निर्देश, सीडीएटीए अनुभाग, और इकाई संदर्भ) पाठ नोड्स को अलग करता है, यानी, न तो आसन्न पाठ नोड्स और न ही खाली टेक्स्ट नोड्स हैं ... "

+1

बुल्सई !! धन्यवाद! –

0

" नाम "तत्व ढूंढें और getTextContent() पर कॉल करें।

+0

ने कोशिश की, –

+0

@pat मदद नहीं की - मुझे नहीं लगता कि आपने इसे सही नोड पर बुलाया था। _Element_ नोड पर, यह सभी समेकित बच्चों को वापस कर देगा। अगर आप इसे बच्चे पर ही कहते हैं, तो यह केवल आंशिक पाठ वापस कर देगा। – jtahlborn

संबंधित मुद्दे