2009-12-09 13 views
17

से सभी टिप्पणी टैग को कैसे निकालें I XmlDocument उदाहरण से सभी टिप्पणी टैग को हटाने के लिए कैसे जायेंगे?XmlDocument

क्या XmlNodeList को पुनर्प्राप्त करने और उन पर पुन: प्रयास करने से बेहतर तरीका है?


    XmlNodeList list = xmlDoc.SelectNodes("//comment()"); 

    foreach(XmlNode node in list) 
    { 
     node.ParentNode.RemoveChild(node); 
    } 
+0

मेरे लिए अच्छा लगता है। – Dave

उत्तर

28

जब आप एक्सएमएल लोड करते हैं, आप XmlReaderSettings

XmlReaderSettings settings = new XmlReaderSettings(); 
settings.IgnoreComments = true; 
XmlReader reader = XmlReader.Create("...", settings); 
xmlDoc.Load(reader); 

उपयोग कर सकते हैं एक मौजूदा उदाहरण पर, अपने समाधान अच्छा लगता है।

4

इस बारे में नहीं है, हालांकि मैं पहले सूची में नोड्स रखने के इच्छुक हूं।

मुझे XmlNodeList के .NET कार्यान्वयन के बारे में निश्चित नहीं है, लेकिन मुझे पता है कि पिछले एमएसएक्सएमएल कार्यान्वयन ने आलसी तरीके से सूची को लोड किया है और अतीत में जैसा कोड डीओएम के परिणामस्वरूप विफल रहा है सूची के रूप में संशोधित पेड़ की गणना की गई है।

foreach (var node in xml.SelectNodes("//comment()").ToList()) 
    node.ParentNode.RemoveChild(node); 
0

आज जिस तरह से अनुप्रयोगों के लिए Visual Basic से <!-- --> निकालने के लिए कैसे (नहीं सी #) की तलाश में, मैं भी nodeTypeString संपत्ति पाया है, लेकिन यह अधिक स्थान लेता है। यहाँ VBA में एक उदाहरण है:

Dim xmldoc As New MSXML2.DOMDocument30 
Dim oNodeList As IXMLDOMSelection 
Dim node As IXMLDOMNode 
Dim i As Long 

Dim FileName As String, FileName1 As String 

FileName = "..." ' Source 
FileName2 = "..." ' Target 

xmldoc.async = False ' ? 
xmldoc.Load FileName 
If (xmldoc.parseError.errorCode <> 0) Then Exit Sub ' or Function 

Set oNodeList = xmldoc.selectNodes("//*") '' all nodes 

For i = 0 To oNodeList.length - 1 
With oNodeList(i) 

    For Each node In .childNodes 
     If node.nodeTypeString = "comment" Then .removeChild node 
    Next 

End With 
Next 

xmldoc.Save FileName2 

Set oNodeList = Nothing ' ? 
Set xmldoc = Nothing 

यह दस्तावेज़ शीर्ष माता पिता टिप्पणी नोड्स omitts, पर वे With xmldoc.documentElement.childNodes का उपयोग कर उदाहरण के लिए, किसी भी तरह सीधे अगर जरूरत पुनः प्राप्त किया जा सकता है।

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