在XML中取消註釋某個節點主體的最簡單方法是什麼?該元素具有唯一的名稱,該文件的結構如下所示:使用C#中的Xml文檔取消註釋XML片段#
somefile.xml
<?xml version="1.0"?>
<name1>
<irrelevant1>
<irrelevant2>
<!--
<irrelevant3 />
-->
</irrelevant2>
</irrelevant1>
<name2>
<name3>
<!--
<name4 field="The" />
<name4 field="Owls" />
<name4 field="Are />
<name4 field="Not" />
<name4 field="What" />
<name4 field="They" />
<name4 field="Seem />
-->
</name3>
</name2>
</name1>
我們的目標應該是這樣的,去掉註釋:
uncommented.xml
<?xml version="1.0"?>
<name1>
<irrelevant1>
<irrelevant2>
<!--
<irrelevant3 />
-->
</irrelevant2>
</irrelevant1>
<name2>
<name3>
<name4 field="The" />
<name4 field="Owls" />
<name4 field="Are />
<name4 field="Not" />
<name4 field="What" />
<name4 field="They" />
<name4 field="Seem />
</name3>
</name2>
</name1>
我的解析方法:
XmlDocument xdoc = new XmlDocument();
xdoc.Load(@"C:\somefile.xml");
XmlNodeList nl = xdoc.GetElementsByTagName("name2");
XmlNode xn = nl[0];
string xn_content = xn.InnerXml;
xn_content = Regex.Replace(xn_content, "<!--|-->", String.Empty);
XmlDocument doc = new XmlDocument();
doc.LoadXml(xn_content);
XmlNode newNode = doc.DocumentElement;
// this import doesn't really help
xdoc.ImportNode(newNode, true);
xn.RemoveAll();
xn.AppendChild(newNode);
xdoc.Save(@"C:\uncommented.xml");
結果與ArgumentException的:
{「要插入的節點是從不同的文檔內容。」}
你打算使用Linq到XML(XDocument)嗎? – 2015-02-09 22:14:32
爲什麼** irrelevant3 **不是沒有完美的。 'irrelevant2'和'name3'的規則是什麼?爲什麼只有'name3'的孩子沒有註釋?我們如何區分它們的程式化? – EZI 2015-02-09 22:19:21
你缺少關於' '的結束引號,它應該是''還有' '。 –
dbc
2015-02-10 02:18:03