xml - Remove a node using xpath -


मेरे पास एक XML संरचना है, इस प्रकार है:

  & lt; a & gt; & Lt; p & gt; & LT; foo & gt; अशक्त & lt; / foo & gt; & Lt; / p & gt; & Lt; p & gt; & LT; foo & gt; एबीसी & lt; / foo & gt; & Lt; / p & gt; & Lt; p & gt; & LT; foo & gt; EFG & lt; / foo & gt; & Lt; / p & gt; & Lt; / a & gt;  

मैं नोड्स को अपडेट करने के लिए org.w3c.dom.Document का उपयोग कर रहा हूं। जब & lt; foo & gt; में कोई मान है null , मैं निकालना चाहता हूं

  & lt; b & gt; & LT; foo & gt; अशक्त & lt; / foo & gt; & Lt; / p & gt;  

क्या यह संभव है? मुझे पता है कि मैं removeChild (childElement) को कॉल कर सकता हूं, लेकिन निश्चित नहीं कि मैं कैसे ऊपर विशिष्ट नेस्टेड तत्व को निकालने के लिए निर्दिष्ट कर सकता हूं।

अपडेट: नीचे दिए गए उत्तर, मैंने कोशिश की:

  स्ट्रिंग क्वेरी = "/ a / b [foo [text () = 'null']]"; वस्तु परिणाम = (xpath.compile (newQuery)) मूल्यांकन करें (डॉक्टर, नोएडी); नोडलिस्ट नोड्स = (नोडलिस्ट) परिणाम; के लिए (int i = 0; i & lt; nodes.getLength (); i ++) {नोड नोड = नोड्स। आईटम (i); doc.removeChild (नोड); }  

मुझे NOT_FOUND_ERR मिलता है: किसी संदर्भ में एक नोड का संदर्भ देने का प्रयास किया जाता है जहां यह मौजूद नहीं है

<पूर्व> doc.removeChild (नोड);

काम नहीं करेगा क्योंकि नोड जिसे आप निकालने का प्रयास कर रहे हैं वह दस्तावेज़ नोड का बच्चा नहीं है, यह दस्तावेज़ तत्व का बच्चा है (< कोड> ए ), जो स्वयं दस्तावेज़ रूट नोड का बच्चा है। आपको सही पैरेंट नोड पर removeChild कॉल करने की आवश्यकता है:

  नोड .getParentNode ()। RemoveChild (नोड);  

Comments

Popular posts from this blog

c# - Reactive Extensions ControlScheduler -

scala - Play Framework - how to bind form to a session field -

c++ - Why does Visual Studio Release build break on non-executing code line -