我需要将XmlElement的OuterXml内容的子集转换为字符串,如下例所示。
想象一下,我有一个表示some-element标签的XmlElement对象
<some-element attribute="value">
<inner-element>
text content
</inner-element>
</some-element>
获取仅<some-element attribute="value">
字符串的最佳方法是什么?
如果可能的话,我更喜欢没有涉及正则表达式的解决方案,但是使用DOM类
答案 0 :(得分:1)
您可以通过浅层克隆节点然后获取节点的外部XML来获取元素的完整XML(包括close标记):
var xml = @"<some-element attribute=""value"">
<inner-element>
text content
</inner-element>
</some-element>";
XmlDocument doc = new XmlDocument();
doc.LoadXml(xml);
MessageBox.Show(doc.DocumentElement.CloneNode(false).OuterXml);
我认为在那之后你将不得不做一些字符串操作来获得你想要的东西,但这相对容易:
var outer = doc.DocumentElement.CloneNode(false).OuterXml;
var final = outer.Substring(0, outer.LastIndexOf(">", outer.Length - 2)+1);
MessageBox.Show(final);
答案 1 :(得分:0)
我终于通过使用LINQ
创建临时 XElement来解决它IEnumerable<XAttribute> attributes = (from XmlAttribute xmlAttribute in node.Attributes select new XAttribute(xmlAttribute.Name, xmlAttribute.Value));
var xElement = new XElement(node.Name, attributes);
return xElement.ToString();