我必须获得这种xml:
<ps>
<pr>
<name>name1</name>
<comp>
<type>CB</type>
<attr>
<value>0</value>
</attr>
</comp>
</pr>
<sep>sep1</sep>
<pr>
<name>name2</name>
<comp>
<type>RB</type>
<attr>
<value>1</value>
</attr>
</comp>
</pr>
<sep>sep2</sep>
<pr>
<name>name3</name>
<comp>
<type>CoM</type>
<attr>
<value>2</value>
</attr>
</comp>
</pr>
<sep>sep3</sep>
</ps>
你可以看到我有ps作为所有人的父母,之后我有序列中的pr和sep,我想维持这个序列。
在我使用XmlElement
之前,它显示了所有sep togetehr和所有pr
。
我想我需要使用XElement,但我不知道如何使用它们。有人可以解释一下或写一段代码,以便了解我将获得这种xml。
我尝试做的是:(不给我想要的东西)
[XmlRoot(ElementName = "attr")]
public class Attr
{
[XmlElement("type")],
public string Type { get; set; }
[XmlElement("value")]
public int Value { get; set; }
}
[XmlRoot(ElementName = "pr")]
public class Pr
{
[XmlElement("name")]
public string Name { get; set; }
[XmlElement("comp")]
public List<Comp> Comp { get { return b3; } }
private readonly List<Comp> b3 = new List<Comp>();
}
[XmlRoot(ElementName = "sep")]
public class Sep
{
[XmlElement("sep")]
public string Sep { get; set; }
}
public void Main()
{
Ps pc = new Ps()
{
Pr = { new Pr { Name = "Name1", Component = { new Comp { Type = "Type1", Attr = { new Attr { Type = "Com" } } } } }, { new Pr { Name = "Name2" ,Comp = { new Comp { Type = "Type2", Attr = { new Attr { Type = "Sl" ....And so On} } } } } } }
,
Sep = { new Sep { Separators = "sep1" ..and so on} }
};
var xml = pc.ToXml();
}
但是这段代码没有给出我想要的序列。它首先在xml中显示所有sep togther然后ps togther(不按顺序) 我已经使用XElement实现了它,但它是静态的,不使用我的类对象,如&#34; Name&#34;,&#34; Comp&#34;,Type,Value等。 它是这样的:
var el = new XElement("ps",
new XElement("pr",
new XElement("name", "name1"),
new XElement("comp",
new XElement("type", "CB"),
new XElement("attr",
new XElement("value", 0)
)
)
),//And so on..
所以它根本不使用Class Objects。我们认为她喜欢这个XElement(&#34;名称&#34;,&#34; name1&#34;)但我希望这样的事情ps Object1 = new ps();
和Object1.pr[0].Name= "name1";
如何实现这一点,它应该保持ps
和sep
的相同序列?