C# 如何格式化RESTWeb服务的XML响应?
我正在用C#玩,这里是您可以获得的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
<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的链接
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
}