用C#中的XDocument创建PathNavigator(带linq的xml)

本文关键字:linq xml PathNavigator 中的 XDocument 创建 | 更新日期: 2023-09-27 18:28:39

我有个问题。是否可以导航到xml中的特定字段并向其中添加元素?

我试过这个:

XDocument doc = XDocument.Load("myxmldoc.xml");
doc.Element("Table").Element(Product).CreateNavigator().Add(new XElement("Lamp", "Lamp"));

不用说,它不起作用。问题是我有一个xml,它看起来像这样:

<Table>
    <Product>
        <Chair/>
        <Table/>
        <ChessBoard/>
    </Product>
    <Product>
        <Chair/>
        <Table/>
        <ChessBoard/>
    </Product>
    <Product>
        <Chair/>
        <Table/>
        <ChessBoard/>
    </Product>
</Table>

正如你所看到的,我有很多产品标签,我希望能够用linq将项目Lamp添加到特定的节点。每次我添加元素时使用:

doc.Element("Table").Element("Porduct").Add(new XElement("Lamp", "Lamp"));

Lamp元素转到第一个Product节点。我希望它转到一个特定的节点,比如说第二个节点。

有人建议我使用:

doc.Element("Table").Element("Porduct").ElementAt(2).Add(new XElement("Lamp", "Lamp"));

但它不起作用。Visual Studio 2010表示它不存在。

用C#中的XDocument创建PathNavigator(带linq的xml)

您需要Elements("Porduct")(注意s)才能使用ElementAt():

  doc.Element("Table").Elements("Porduct").ElementAt(2).Add(...);

如果产品有一些东西可以识别它们,比如ID属性,那就容易一点了。

(也许你应该修复打字错误Pordduct/产品