如何在 C# 中使用 XMLWriter 将字符串(XML 节点格式化为无根节点)编写为节点?
How To Write A String(XML Node formatted without root) as nodes using XMLWriter in C#?
我正在尝试使用 XMLWriter
将字符串(只不过是 XML 节点)写入新的 XML 文件
XmlWriter writer = XmlWriter.Create(@"C:\Test.XML")
writer.WriteStartDocument();
writer.WriteStartElement("Test");
string scontent = "<A a="Hello"></A><B b="Hello"></B>";
XmlReader content = XmlReader.Create(new StringReader(scontent));
writer.WriteNode(content, true);
//Here only my first node comes in the new XML but I want complete scontent
writer.WriteEndElement();
预期输出:
<Test>
<A a="Hello"></A>
<B b="Hello"></B>
</Test>
试试这个...在 ""
之前使用 \
XmlWriter writer = XmlWriter.Create(@"C:\Test.XML")
writer.WriteStartDocument();
writer.WriteStartElement("Test");
string scontent = "<A a=\"Hello\"></A><B b=\"Hello\"></B>";
XmlReader content = XmlReader.Create(new StringReader(scontent));
writer.WriteNode(content, true);
//Here only my first node comes in the new XML but I want complete scontent
writer.WriteEndElement();
您必须指定 ConformanceLevel
,因为您的 xml 没有根元素。
也总是应该处理所有使用的资源。
using (XmlWriter writer = XmlWriter.Create(@"C:\Test.XML"))
{
writer.WriteStartDocument();
writer.WriteStartElement("Test");
string scontent = "<A a=\"Hello\"></A><B b=\"Hello\"></B>";
var settings = new XmlReaderSettings();
settings.ConformanceLevel = ConformanceLevel.Fragment;
using (StringReader stringReader = new StringReader(scontent))
using (XmlReader xmlReader = XmlReader.Create(stringReader, settings))
{
writer.WriteNode(xmlReader, true);
}
writer.WriteEndElement();
}
此外,您可以使用XmlWriterSettings
添加缩进。
我正在尝试使用 XMLWriter
将字符串(只不过是 XML 节点)写入新的 XML 文件XmlWriter writer = XmlWriter.Create(@"C:\Test.XML")
writer.WriteStartDocument();
writer.WriteStartElement("Test");
string scontent = "<A a="Hello"></A><B b="Hello"></B>";
XmlReader content = XmlReader.Create(new StringReader(scontent));
writer.WriteNode(content, true);
//Here only my first node comes in the new XML but I want complete scontent
writer.WriteEndElement();
预期输出:
<Test>
<A a="Hello"></A>
<B b="Hello"></B>
</Test>
试试这个...在 ""
\
XmlWriter writer = XmlWriter.Create(@"C:\Test.XML")
writer.WriteStartDocument();
writer.WriteStartElement("Test");
string scontent = "<A a=\"Hello\"></A><B b=\"Hello\"></B>";
XmlReader content = XmlReader.Create(new StringReader(scontent));
writer.WriteNode(content, true);
//Here only my first node comes in the new XML but I want complete scontent
writer.WriteEndElement();
您必须指定 ConformanceLevel
,因为您的 xml 没有根元素。
也总是应该处理所有使用的资源。
using (XmlWriter writer = XmlWriter.Create(@"C:\Test.XML"))
{
writer.WriteStartDocument();
writer.WriteStartElement("Test");
string scontent = "<A a=\"Hello\"></A><B b=\"Hello\"></B>";
var settings = new XmlReaderSettings();
settings.ConformanceLevel = ConformanceLevel.Fragment;
using (StringReader stringReader = new StringReader(scontent))
using (XmlReader xmlReader = XmlReader.Create(stringReader, settings))
{
writer.WriteNode(xmlReader, true);
}
writer.WriteEndElement();
}
此外,您可以使用XmlWriterSettings
添加缩进。