1
XDocument xDocumentObject = XDocument.Parse("<Test>"+
            "<elementx id='1'  att='aaa' />" +
            "<elementx id='2'  att='bbb' />" +
            "</Test>");

違いは何ですか :

1)

byte[] xmlBytes = Encoding.Default.GetBytes(xDocumentObject.ToString());

2)

byte[] xmlBytes;
using (MemoryStream ms = new MemoryStream())
{
   xDocumentObject.Save(ms);
   xmlBytes = ms.ToArray();
}

(1)の「デフォルト」エンコーディングとは何ですか?(2)で使用されるエンコーディングは何ですか?また、どの方法が好ましいですか?

4

2 に答える 2

2

最初のケースでは、オペレーティング システムの現在の ANSI コード ページのエンコーディングを使用して、文字列をバイト配列に変換しています。XDocument文字列は、インスタンスによって生成され、バイト配列に変換された XML ドキュメントを表します。.NET では、すべての文字列が Unicode でエンコードされています。

2 番目の例では、XDocumentのエンコーディングが使用されます。たとえば、次の XMLがある場合、 <?xml encoding="utf-8"?>UTF-8 が使用されます。Declarationプロパティを使用すると、使用するエンコーディングを指定できます。

XDocument xDocumentObject = new XDocument(
    new XDeclaration("1.0", "utf-8", "yes"), 
    new XElement(
        "Test",
        new XElement("elementx", new XAttribute("id", "1"), new XAttribute("att", "aaa")), 
        new XElement("elementx", new XAttribute("id", "2"), new XAttribute("att", "bbb"))
    )
);

また:

XDocument xDocumentObject = XDocument.Parse(
    @"<?xml version=""1.0"" encoding=""utf-8"" standalone=""yes""?>
    <Test>
        <elementx id=""1"" att=""aaa"" />
        <elementx id=""2"" att=""bbb"" />
    </Test>"
);

UTF-8 エンコーディングを指定できます。

于 2012-09-23T16:18:13.930 に答える
1

1)クラスの完全な名前を取得します。ここでは、デフォルトのコードページでエンコードされた「System.Xml.XmlDocument」です(私のコンピューターのASCII、1byte / charに似ています)

2)「エンコーディング属性の値はXmlDeclaration.Encodingプロパティから取得されます」というドキュメントをご覧ください http://msdn.microsoft.com/en-US/library/z5250dbd.aspx プロパティにはデフォルト値があります: "エンコーディング属性が含まれていない場合、ドキュメントの書き込みまたは保存時に UTF-8 エンコーディングが想定されます。" http://msdn.microsoft.com/en-US/library/system.xml.xmldeclaration.encoding.aspx

于 2012-09-23T16:24:44.993 に答える