使用 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>
我正在尝试使用:
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>