Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何格式化RESTWeb服务的XML响应?_C#_Xml_Web Services_Rest - Fatal编程技术网

C# 如何格式化RESTWeb服务的XML响应?

C# 如何格式化RESTWeb服务的XML响应?,c#,xml,web-services,rest,C#,Xml,Web Services,Rest,我正在用C#玩,这里是您可以获得的XML类型 <Person xmlns="http://schemas.datacontract.org/2004/07/RESTfulDemo" xmlns:i="http://www.w3.org/2001/XMLSchema-instance"> <Age>23</Age> <ID>1</ID> <Name>Bob Kohler

我正在用C#玩,这里是您可以获得的XML类型

    <Person xmlns="http://schemas.datacontract.org/2004/07/RESTfulDemo" 
      xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
      <Age>23</Age>
      <ID>1</ID>
      <Name>Bob Kohler</Name>
    </Person>
1) 如何在XML中为每个数据成员添加属性/前缀

2) 如何将XML的标题设置为以下内容(或其他内容):


问题2)可在初始化文档时完成:

XDocument document = new XDocument(new XDeclaration("1.0", "utf-16", "yes"));
至于问题1),根据我的理解,如果您有这样的XML文件:

<CATALOG>
  <CD>
    <TITLE> ... </TITLE>
    <ARTIST> ... </ARTIST>
    <YEAR> ... </YEAR>
  </CD>
</CATALOG>

下面是我为克服这个问题所做的。该解决方案不涉及序列化,但至少可以按照您的需要格式化响应

  • (1) 将System.xml.linq中的XElement作为每个方法的返回类型,并在每个方法中使用XElement类构建xml
  • (2) 用于在xml响应的顶部添加xml声明。感谢@Dash的链接

可以添加doctype,但需要一些编码-请参阅。对于1)您必须考虑覆盖XMLSerializationThank@Dash,您的链接非常值得一看问题是我不处理文档。。。GetPerson()的返回类型为Person。该服务返回一个人,但在发送之前构建xml。那么,我应该在哪里使用这种代码呢?嗯,我不太明白,但也许这篇文章会帮助你:对不起,不,因为我在这里使用序列化(据我所知,我可能是错的),我在任何时候都没有把Web服务的响应消息作为xml节点。
XDocument document = new XDocument(new XDeclaration("1.0", "utf-16", "yes"));
<CATALOG>
  <CD>
    <TITLE> ... </TITLE>
    <ARTIST> ... </ARTIST>
    <YEAR> ... </YEAR>
  </CD>
</CATALOG>
XmlNodeList list = document.GetElementsByTagName("CATALOG");
int i = 0;

foreach (XmlNode CD in list)
  {
    i++;
    XmlAttribute idAttr = document.CreateAttribute("id");
    idAttr.Value = i.ToString();
    CD.Attributes.Append(idAttr); //to append the created attribute and its value to the CD node
  }