5

BOMなしでXDocumentのコンテンツを出力する方法はありますか?Flashで出力を読み取ると、エラーが発生します。

4

7 に答える 7

9

XmlWriterを使用してXMLを記述している場合は、エンコードを初期化されたものに設定して、BOMを除外できます。

例:System.Text.UTF8Encodingのコンストラクターは、BOMが必要かどうかを指定するためにブール値を取ります。したがって、次のようになります。

XmlWriter writer = XmlWriter.Create("foo.xml");
writer.Settings.Encoding = new System.Text.UTF8Encoding(false);
myXDocument.WriteTo(writer);

UTF-8エンコーディングを使用し、バイト順マークを使用しないXmlWriterを作成します。

于 2008-10-01T19:07:26.920 に答える
5

Chris Wenham の回答に対するわずかな変更。

XmlWriter の作成後にエンコーディングを変更することはできませんが、XmlWriter の作成時に XmlWriterSettings を使用して設定できます。

XmlWriterSettings settings = new XmlWriterSettings();
settings.Encoding = new System.Text.UTF8Encoding(false); 

XmlWriter writer = XmlWriter.Create("foo.xml", settings); 
myXDocument.WriteTo(writer); 
于 2010-06-24T08:22:16.020 に答える
3

上記にコメントを追加することはできませんでしたが、Chris Wenhamの提案を使用する人がいる場合は、ライターを破棄することを忘れないでください。なぜ出力が切り捨てられたのか疑問に思ったのですが、それが理由でした。

using(XmlWriter...) {...}クリスの提案への変更を提案する

于 2009-02-27T11:08:59.687 に答える
2

投稿の組み合わせの一種、多分このようなもの:


MemoryStream ms = new MemoryStream();
StreamWriter writer = new StreamWriter(ms, new UTF8Encoding(false));
xmlDocument.Save(writer);
于 2008-10-01T19:29:16.757 に答える
1

前述のとおり、この問題には悪臭があります。

このサポート ノートによると、Flash は BOM を使用して UTF-16BE と UTF-16LE を明確に区別します。XDocument は UTF16 でエンコードされた整形式の XML を生成し、Macromedia は Flash が UTF16 でエンコードされた整形式の XML を読み取ることができると主張しています。

これは、あなたが遭遇している問題が何であれ、おそらく BOM が原因ではないのではないかと疑っています。それが私だったら、実際の問題は別の場所にあることを期待して、もっと掘り下げます。

于 2008-10-02T19:58:57.223 に答える
0

おそらく、出力でSystem.Text.Encoding.Convert()を使用できます。私がテストしたものではなく、試してみるものと同じです。

于 2008-10-01T19:00:13.300 に答える
0

文字列に変換してから、自分でマークを削除してください。

于 2008-10-01T19:03:37.210 に答える