将XElement写入Stream时保留字符编码

时间:2013-08-01 19:03:17

标签: xml asp.net-mvc

我正在研究ASP.NET MVC应用程序。有一项服务我需要发送RESTful请求。在这种特殊情况下,我必须使用POST将XML发送到服务。我们没有使用WCF。

XML位于XElement对象中。原始XML包括字符编码信息。我想在将XML写入服务时保持字符编码不变。

我可以使用以下代码获取对请求流的引用:

HttpWebRequest req = (HttpWebRequest) WebRequest.Create( url );
req.Method = "POST";
req.Timeout = 30000;
Stream requestStream = req.GetRequestStream();

我写了这段代码:

using ( XmlWriter writer = new XmlTextWriter( requestStream, Encoding.UTF8 ) ) {
    xml.WriteTo( writer );
}

但这可能会改变XML的编码。编码不会改变很重要。我似乎找不到返回XElement.

编码的属性或方法

如何将XElement写入requestStream并保留现有字符编码?

1 个答案:

答案 0 :(得分:1)

在深入挖掘文档之后,我找到了答案。

XDocument类有一个名为Declaration的属性,其类型为XDeclarationXDeclaration对象有一个名为Encoding的属性,它包含我需要的信息。

我只需要保留该属性,以便将其传递给XmlTextWriter构造函数。