0

当我调用 XMLTextWriter 时,似乎发生了一些有趣的行为......

XmlTextWriter writer = new XmlTextWriter(targetFileName, Encoding.UTF8);

writer.WriteValue("< ?xml version=\"1.0\" encoding=\"UTF-8\"?>");
writer.WriteString(Environment.NewLine);
writer.WriteStartElement("video","UploadXsd");
writer.WriteString(Environment.NewLine);
    writer.WriteStartElement("title");
        writer.WriteString(Environment.NewLine);
        writer.WriteString(title);
        writer.WriteString(Environment.NewLine);
    writer.WriteEndElement();
    writer.WriteString(Environment.NewLine);
    writer.WriteStartElement("description");
    writer.WriteString(Environment.NewLine);
        writer.WriteString(description);
        writer.WriteString(Environment.NewLine);
    writer.WriteEndElement();
    writer.WriteString(Environment.NewLine);
    writer.WriteStartElement("contributor");
    writer.WriteString(Environment.NewLine);
        writer.WriteString(contributor);
        writer.WriteString(Environment.NewLine);
    writer.WriteEndElement();
    writer.WriteString(Environment.NewLine);
    writer.WriteStartElement("subject");
    writer.WriteString(Environment.NewLine);
        writer.WriteString(subject);
        writer.WriteString(Environment.NewLine);
    writer.WriteEndElement();
    writer.WriteString(Environment.NewLine);
writer.WriteEndElement();
writer.WriteString(Environment.NewLine);

writer.Flush();
writer.Close();

然后我看到它正在创建这个:

&lt; ?xml version="1.0" encoding="UTF-8"?&gt;
<video xmlns="UploadXsd">
<title>
MyTitle
</title>
<description>
MyDescription
</description>
<contributor>
MyContributor
</contributor>
<subject>
MySubject
</subject>
</video>

为什么作者将第一个元素编码为 Html 而不是其余的?,更重要的是我如何阻止它这样做?我只想创建第一个元素。

4

2 回答 2

1

为什么作者将第一个元素编码为 Html 而不是其余的?

因为它是你唯一使用的地方WriteValue

我该如何阻止它这样做?我只想创建第一个元素。

XML 声明不是元素。这是一个处理指令。由于版本 1.0 和 UTF-8 编码是默认的,最简单的做法就是完全省略它。它不会对文档的含义产生影响,但可以节省您的时间和几个字节。

如果您真的想包含它,请使用WriteStartDocument

于 2011-06-24T11:30:58.680 回答
0

不要使用WriteValue(),它会进行编码。请改用 WriteProcessingInstruction。

MSDN 示例

XmlWriter writer = XmlWriter.Create("output.xml");
writer.WriteProcessingInstruction("xml", "version='1.0' encoding='UTF-16'");
writer.WriteStartElement("root");
writer.Close();
于 2011-06-24T11:33:52.467 回答