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 に答える