Avoid xml escaping of angle brackets, when passing xml string to System.Xml.Linq.XElement

跟風遠走 提交于 2019-12-02 08:51:19

The simplest option is probably to give it a root element, then parse it as XML:

var doc = XDocument.Parse("<parent>" + text + "</parent>");

If you need to append to an existing element, you can use:

var elements = XElement.Parse("<parent>" + text + "</parent>").Elements();
existingElement.Add(elements);

An alternative to Jon's suggestion would be to create an XmlReader for your fragment and parse from that:

var element = new XElement("parent");

var settings = new XmlReaderSettings
{
    ConformanceLevel = ConformanceLevel.Fragment
};

var text = GetXmlString();

using (var sr = new StringReader(text))
using (var xr = XmlReader.Create(sr, settings))
{
    xr.MoveToContent();

    while (!xr.EOF)
    {
        var node = XNode.ReadFrom(xr);   
        element.Add(node);
    }
}

This would be useful if the 'parent' element already exists, else simple concatenation of the XML nodes at each end and parsing would be simpler.

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!