2012-03-21 66 views
0

我有一个问题。是否有可能导航到XML中的特定字段并添加元素?在C#中使用XDocument创建PathPathNavigator(xml with linq)

我尝试这样做:

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添加到特定的节点。每次添加元素时:

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

灯元素转到第一个产品节点。我想让它去一个特定的节点,比如说第二个节点。

有人劝我用:

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

但它不工作。 Visual Studio 2010说它不存在。

回答

0

你需要Elements("Porduct")(注意小号)使用ElementAt()

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

这将是一个更容易一些,如果产品有一些东西来识别它们,就像一个ID属性。

(也许你应该修正错字Porduct/产品

+0

没赶上我的错字。谢谢,我会在明天早上尝试,并回答一个答案。我已经离开了工作,这里迟到了。 – morcillo 2012-03-21 23:00:19