我从网址XML获得此Xml输出 使用HTTP GET方法
如何添加此XML声明?
?xml version =“1.0”encoding =“ISO-8859-1”?>
这是ServiceContract
[ServiceContract]
public interface IService1
{
[OperationContract]
[WebInvoke(Method = "GET",
ResponseFormat = WebMessageFormat.Xml,
//BodyStyle = WebMessageBodyStyle.Wrapped,
UriTemplate = "{id}")]
XElement GetRecipesByID(string id);
这是实施, 我将DataTable转换为Xml并从URL
获取public XElement GetRecipesByID(string id)
{
StringWriter str = new StringWriter();
DataSet dataSet = new DataSet();
dataSet.Tables.Add(Table);
XmlTextWriter xtext = new XmlTextWriter(str);
xtext.Formatting = Formatting.Indented;
xtext.WriteStartDocument();
xtext.WriteStartElement("rss");
xtext.WriteAttributeString("version", "2.0");
xtext.WriteStartElement("channel");
xtext.WriteElementString("title", "GetCard");
xtext.WriteElementString("link", "10.0.0.253");
xtext.WriteElementString("lastBuildDate", " ");
xtext.WriteElementString("generator", "Alikas Feed");
xtext.WriteElementString("error", error);
xtext.WriteElementString("cardid", "RX0016502");
xtext.WriteElementString("name", " ");
xtext.WriteElementString("passport_id", "60001082881");
xtext.WriteElementString("tel", " ");
xtext.WriteEndElement();
xtext.WriteEndDocument();
result = str.ToString();
xtext.Close();
XmlDocument doc = new XmlDocument();
doc.Save(str);
return XElement.Parse(result);
}
当我在文件中保存这个xml时,有xml声明,但是当我尝试从URL获取此xml时,xml声明没有显示。 我需要从URL中显示此声明。 谢谢
答案 0 :(得分:0)
df_list = [df1, df2, df3]
应该已经添加了XML声明。它使用WriteStartDocument
指定的Encoding
。
您正在使用TextWriter
,它将始终报告UTF-16,因为.NET字符串是UTF-16。要获得ISO-8859-1,您需要使用显式编码构建StringWriter
或其他StreamWriter
。
您是否考虑过直接创建TextWriter
?在这种情况下无需使用XDocument
。
答案 1 :(得分:0)
请尝试以下操作:
{{1}}
答案 2 :(得分:0)
有一种特殊的方法:
var xmlDoc = new XmlDocument();
xmlDoc.CreateXmlDeclaration("1.0", "ISO-8859-1", null);
xmlDoc.Save(str);
编译参数上的msdn注意:这是将XmlDocument保存到文件或流时使用的编码;因此,它必须设置为Encoding类支持的字符串,否则保存失败。
答案 3 :(得分:0)
这似乎对我有用
XDocument xel = XDocument.Parse( "<root><el>123</el></root>" );
xel.Declaration = new XDeclaration( "1.0","UTF-8","true" );
xel.Save( @"c:\temp.xml" );