使用XElement从C#设置XML嵌套节点

时间:2010-02-14 06:59:49

标签: c# xml

我正在修改一些遗留代码,需要使用C#解析/写入XML。我正在尝试设置嵌套元素的值但是没有任何乐趣。它应该很简单,但我不确定我做错了什么。

以下是XML模板:

<my:productReport>
    <my:productId>1</my:productId>
    <my:company>MyCompany</my:company>
    <my:productPerson>
        <my:productPersonId xsi:nil="true"></my:productPersonId>
        <my:productPersonName></my:productPersonName>
    </my:productedBy>
</my:productReport>

我可以设置公司没问题:

 XElement companyEle = doc.Root.Element(myNameSpace + "company");
   companyEle.Value = value;

但是如何添加产品人员ID和姓名?可以添加多个personID / personName元素。

1 个答案:

答案 0 :(得分:2)

你正在寻找这样的东西吗?你提到需要设置和添加,抱歉,如果我误解了。此外,如果您没有注意到,您提供的模板的productPerson的结束标记错误。

//Get collection of productPerson elements
IEnumerable<XElement> prodPersons = productReport.Elements("productPerson");
foreach(XElement pp in prodPersons)
{
  //Set values
  pp.Element("productPersonId").Value = "1";
  pp.Element("productPersonName").Value = "xxx";
}

//Add a productPerson element
XElement prodPersonEle =
     new XElement("productPerson",
          new XElement("productPersonId","3"),
          new XElement("productPersonName", "Somename")
     );


//Add prodPersonEle to whatever parent it belongs.