替换OuterXml或从InnerXml生成预期的字符串
本文关键字:字符串 OuterXml 或从 InnerXml 替换 | 更新日期: 2023-09-27 18:16:53
我有一个使用DataGridView来显示XML文件内容的UI。
如果XmlNode只包含InnerText,那就很简单了,但是我遇到了包含子节点(而不仅仅是字符串)的节点的问题。
简单<node>value</node>
在DataGridViewCell中显示为"value"。
<node>
<foo>bar</foo>
<foo2>bar</foo2>
</node>
问题是InnerXml代码不是有意的,而且很难在UI中修改。
我尝试使用xmltextwwriter来"美化"字符串-它工作得很好,但是需要XmlNode(包括节点,而不仅仅是子节点),我不能将其分配回InnerXml。
我希望在UI中看到以下内容:
<foo>bar</foo>
<foo2>bar</foo2>
(可以稍后赋值给InnerXml)
或
<node>
<foo>bar</foo>
<foo2>bar</foo2>
</node>
(并找到如何用该字符串替换OuterXml的方法)。
谢谢你的建议。马丁
您可以将OuterXml
加载到XElement
,然后使用String.Join()
连接以换行符分隔的根节点的所有子元素(从其他角度来看,是InnerXml
),例如:
XElement e = e.Parse(something.OuterXml);
var result = string.Join(
Environment.NewLine,
e.Elements().Select(o => o.ToString())
);