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 に答える