替换OuterXml或从InnerXml生成预期的字符串

时间:2014-08-07 16:00:57

标签: c# xml xmltextwriter

我有一个使用DataGridView显示XML文件内容的UI。

如果XmlNode只包含InnerText,那么它很简单,但是我遇到了包含子节点(而不仅仅是字符串)的节点的问题。

简单

<node>value</node>

在DataGridViewCell中显示为“value”。

复合

<node>
    <foo>bar</foo>
    <foo2>bar</foo2>
</node> 

问题是InnerXml代码不是预期的,而且在UI中很难修改。

我尝试使用XmlTextWriter来“美化”字符串 - 它运行得很好,但是需要一个XmlNode(包括节点,不仅仅是子节点)而且我不能将它分配回InnerXml。

我想在UI中看到以下内容:

<foo>bar</foo>
<foo2>bar</foo2>

(之后可以将其分配给InnerXml)

<node>
    <foo>bar</foo>
    <foo2>bar</foo2>
</node> 

(找到一种如何用这个字符串替换OuterXml的方法)。

感谢您的任何想法, 马丁

1 个答案:

答案 0 :(得分:0)

您可以将OuterXml加载到XElement,然后使用String.Join()加入根节点的所有子元素(在其他观点,InnerXml )换行符分隔,例如:

XElement e = e.Parse(something.OuterXml);
var result = string.Join(
                          Environment.NewLine, 
                          e.Elements().Select(o => o.ToString())
                        );