XML文字列を取得する方法は2つあります。
解決策1: XMl文字列を取得するには、XmlElementをXDocumentオブジェクトに配置する必要があります。で試してみてください
List<Peoples> peopleList = new List<Peoples>();
peopleList.Add(new Peoples() { Name = "xxx", Age = 23 });
peopleList.Add(new Peoples() { Name = "yyy", Age = 25 });
var people = (from item in peopleList
select new XElement("people",
new XElement("name", item.Name),
new XElement("age", item.Age)
));
XElement root = new XElement("Peoples");
root.Add(people);
XDocument xDoc = new XDocument(
new XDeclaration("1.0", "utf-8", "yes"),
root);
string str = xDoc.ToString();
Xml文字列を取得するにはルート要素が必要です。
出力:
<Peoples>
<people>
<name>xxx</name>
<age>23</age>
</people>
<people>
<name>yyy</name>
<age>25</age>
</people>
</Peoples>
ここで、名前と年齢はXElementと見なされます。問題のコードとして、あなたは言及しXAttribute
ました。名前と年齢をと見なしたい場合は、以下のコードを試してくださいXAttribute
。
List<Peoples> peopleList = new List<Peoples>();
peopleList.Add(new Peoples() { Name = "xxx", Age = 23 });
peopleList.Add(new Peoples() { Name = "yyy", Age = 25 });
var people = (from item in peopleList
select new XElement("people",
new XAttribute("name", item.Name),
new XAttribute("age", item.Age)
));
XElement root = new XElement("Peoples");
root.Add(people);
XDocument xDoc = new XDocument(
new XDeclaration("1.0", "utf-8", "yes"),
root);
string str = xDoc.ToString();
出力:
<Peoples>
<people name="xxx" age="23" />
<people name="yyy" age="25" />
</Peoples>
解決策2:次のXml文字列が必要な場合は、以下を試してくださいList<XElement>
。
string str = people.Select(x => x.ToString()).Aggregate(String.Concat);
XElementが名前と年齢に使用されている場合、出力:
<people>
<name>xxx</name>
<age>23</age>
</people>
<people>
<name>yyy</name>
<age>25</age>
</people>
名前と年齢にXAttributeが使用されている場合、出力:
<people name="xxx" age="23" />
<people name="yyy" age="25" />
それがうまくいくことを願っています。ソリューション2は、必要なものに最も適しています。