CreatePathNavigator с XDocument в C # (xml с linq) - PullRequest
0 голосов
/ 22 марта 2012

У меня есть вопрос.Можно ли перейти к определенному полю в 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>

Как видите, у меня есть много тегов Product, и я хочу иметь возможность добавить элемент Lamp в определенный узел с помощью linq.Каждый раз, когда я добавляю элементы с помощью:

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 говорит, что его не существует.

1 Ответ

0 голосов
/ 22 марта 2012

Вам нужно Elements("Porduct") (обратите внимание на s ), чтобы использовать ElementAt():

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

Было бы немного проще, если бы у Продуктов было что-то для их идентификации, например атрибут ID.

(И, вероятно, вы должны исправить опечатку Porduct / Product )

...