我有一个使用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的方法)。
感谢您的任何想法, 马丁
答案 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())
);