繁体   English   中英

XmlElement将打开标记转换为字符串C#

[英]XmlElement convert open tag to string c#

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

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

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

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

如果可能,我宁愿不使用正则表达式但使用DOM类的解决方案

您可以通过浅层克隆节点然后获取节点的外部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);

我终于通过创建一个临时 XElement而不是使用LINQ来解决了它

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM