3

我正在玩这个简单的 C# 教程,这里是你可以 GET 的那种 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>

这是 Person.cs 类:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Runtime.Serialization;

    namespace RESTfulDemo
    {   

      [DataContract]
      public class Person
      {
         [DataMember]
         public string ID;

         [DataMember]
         public string Name;

         [DataMember]
         public string Age;
      }
    }

1) 我应该如何在我的 XML 中为每个数据成员添加属性/前缀?

2)如何将我的 XML 的标题设置为此(或其他任何内容):

    <?xml version="1.0"?>
4

2 回答 2

0

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

XDocument document = new XDocument(new XDeclaration("1.0", "utf-16", "yes"));

至于问题1),据我了解,如果您有这样的XML文件:

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

并且您需要"id"CD节点添加一个属性,(其中 id 自动递增)

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
  }
于 2012-08-13T09:14:46.017 回答
0

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

  • (1) 将 System.xml.linq 中的 XElement 作为每个方法的返回类型,并在每个方法中使用 XElement 类构建 xml。
  • (2) 完全使用此处提供的代码在您的 xml 响应之上添加 xml 声明。感谢@Dash 提供链接。
于 2012-08-14T20:52:01.510 回答