使用 XDocument。 C#

Work with XDocument. C#

我正在尝试使用:

new XElement("sometag", XElement.Parse(someText));

我不知道 someText 的值,但我想得到:

<sometag>
    qwert <tag>qwe</tag> qwerty
</sometag>

如果

someText = "qwert <tag>qwe<tag> qwerty";

<sometag>
    qwert qwe qwerty
</sometag>

如果

someText = "qwert qwe qwerty";

如何实施?

您需要解析包含任何 XNode 而不是 XElement 的片段。没有明显的方法可以做到这一点。使用一些较低级别的 XML API,您可以使用如下方式读取每个节点:

const string someText = "qwert <tag>qwe</tag> qwerty";

var element = new XElement("sometag");

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

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

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

结果XML是:

<sometag>qwert <tag>qwe</tag> qwerty</sometag>