XmlElement将open标记转换为字符串c#

时间:2014-04-15 13:50:42

标签: c# .net

我需要将XmlElement的OuterXml内容的子集转换为字符串,如下例所示。

想象一下,我有一个表示some-element标签的XmlElement对象

<some-element attribute="value">
    <inner-element>
        text content
    </inner-element>
</some-element>

获取仅<some-element attribute="value">字符串的最佳方法是什么?

如果可能的话,我更喜欢没有涉及正则表达式的解决方案,但是使用DOM类

2 个答案:

答案 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();