.net 在这种情况下如何使用Xelement

.net 在这种情况下如何使用Xelement,.net,xml,xml-serialization,xelement,xml-deserialization,.net,Xml,Xml Serialization,Xelement,Xml Deserialization,我必须获得这种xml: <ps> <pr> <name>name1</name> <comp> <type>CB</type> <attr> <value>0</value> </attr> </com

我必须获得这种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>
但是这段代码并没有给出我想要的序列。它在xml中首先显示所有sep,然后是ps(不按顺序) 我使用XElement实现了它,但它是静态的,不使用我的类对象,如“Name”、“Comp”、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..
所以它根本不使用类对象。我们给她分配了类似于XElement(“name”,“name1”)的元素,但我想要这样的东西
ps Object1=new ps()
Object1.pr[0].Name=“name1”


如何实现这一点,它应该保持
ps
sep
的相同顺序?

“在我使用
xmlement
之前”-你是说
XmlSerializer
?(
xmlement
不会那样做;
XmlSerializer
会这样做)@marcGravel不,我已经用XmlSerializer做了。它一起显示所有sep和所有pr。我想让它们按顺序排列,但我找不到必须使用XElement来完成。我用代码的第二部分进行了尝试,但游标没有在这个循环中输入foreach(pc.Pr中的var param){here},因为Pr里面没有任何内容。那么如何使用XElement实现它呢?@user234839当面对现实时,你想做什么在很大程度上是无关紧要的(除非你自愿编写一个序列化库来弥补这两件事之间的差距);如果你想使用对象模型,你基本上是在做序列化——我们已经知道这并不能实现你想要的输出。所以:别提了。相反,您必须直接构建xml模型。我已经就同一个话题进行了3到5次对话,但最终你将不得不在这里做腿部工作。我不能自愿为你写。@user234839不,我认为这不是一个合适的解决方案;我已经给了你我的建议:构造和解析DOM。我已经向你展示了如何。我不确定你到底想要什么,但再说一次:我不会简单地为你写整件事。
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..