C# 将XElement添加到特定位置的另一个XElement 请考虑此代码> XML : <Employees> <Person> <ID>1000</ID> <Name>Nima</Name> <LName>Agha</LName> </Person> <Person> <ID>1002</ID> <Name>Ligha</Name> <LName>Ligha</LName> </Person> <Person> <ID>1003</ID> <Name>Jigha</Name> <LName>Jigha</LName> </Person> </Employees>

C# 将XElement添加到特定位置的另一个XElement 请考虑此代码> XML : <Employees> <Person> <ID>1000</ID> <Name>Nima</Name> <LName>Agha</LName> </Person> <Person> <ID>1002</ID> <Name>Ligha</Name> <LName>Ligha</LName> </Person> <Person> <ID>1003</ID> <Name>Jigha</Name> <LName>Jigha</LName> </Person> </Employees>,c#,xml,c#-4.0,linq-to-xml,xelement,C#,Xml,C# 4.0,Linq To Xml,Xelement,我想将这个XEelemnt变量添加到特定位置的第一个XElement(例如作为第二个Person标记)。我怎么能做到 谢谢首先,您需要加载xml字符串,其次,您获得要插入xml的位置,然后插入新的xml。下面是一个如何做到这一点的示例 var reader = new StringReader(@"<Employees> <Person> <ID>1000</ID> <Name>Nima</

我想将这个
XEelemnt
变量添加到特定位置的第一个
XElement
(例如作为第二个
Person
标记)。我怎么能做到


谢谢

首先,您需要加载xml字符串,其次,您获得要插入xml的位置,然后插入新的xml。下面是一个如何做到这一点的示例

var reader = new StringReader(@"<Employees>
    <Person>
        <ID>1000</ID>
        <Name>Nima</Name>
        <LName>Agha</LName>
    </Person>
    <Person>
        <ID>1002</ID>
        <Name>Ligha</Name>
        <LName>Ligha</LName>
    </Person>
    <Person>
        <ID>1003</ID>
        <Name>Jigha</Name>
        <LName>Jigha</LName>
    </Person>
</Employees>");
var xdoc = XDocument.Load(reader);
xdoc.Element("Employees").
   Elements("Person").
   First().
   AddAfterSelf(new XElement("Person", 
       new XElement("ID", 1001),
       new XElement("Name", "Aba"),
       new XElement("LName", "Aba")));

var sb = new StringBuilder();
var writer = new StringWriter(sb);
xdoc.Save(writer);
Console.WriteLine(sb);

PS:为了简单起见,我没有添加空性检查。

您是否将xelement作为对象?对不起,我不明白您的意思…您是否加载了xml字符串?是的,我将其加载到
xelement
谢谢,但我不想添加与您的代码类似的第二个xml。我想在不知道
ID=1001
Name=Aba
的情况下添加它,... . 我想添加第二个变量。我说,比如在第二个位置。我想在
XElement
n
位置添加该变量,ID=1001是新元素,以获取我使用的第一个元素first(),然后addafterlf,这意味着它将作为第二个元素插入。请参阅第一条注释。我想在
n
place中添加您的意思是使用索引作为参数插入新元素?
var reader = new StringReader(@"<Employees>
    <Person>
        <ID>1000</ID>
        <Name>Nima</Name>
        <LName>Agha</LName>
    </Person>
    <Person>
        <ID>1002</ID>
        <Name>Ligha</Name>
        <LName>Ligha</LName>
    </Person>
    <Person>
        <ID>1003</ID>
        <Name>Jigha</Name>
        <LName>Jigha</LName>
    </Person>
</Employees>");
var xdoc = XDocument.Load(reader);
xdoc.Element("Employees").
   Elements("Person").
   First().
   AddAfterSelf(new XElement("Person", 
       new XElement("ID", 1001),
       new XElement("Name", "Aba"),
       new XElement("LName", "Aba")));

var sb = new StringBuilder();
var writer = new StringWriter(sb);
xdoc.Save(writer);
Console.WriteLine(sb);
var xdoc = XDocument.Load(reader);
xdoc.Element("Employees").
    Elements("Person").
    ElementAt(0).
    AddAfterSelf(new XElement("Person", 
        new XElement("ID", 1001),
        new XElement("Name", "Aba"),
        new XElement("LName", "Aba")));