如何在每个xml节点中放置值

时间:2013-06-11 20:35:58

标签: c# xml

我已使用C#,

通过此代码生成xmldocument
  protected XDocument generateXML()
    {
        XDocument xdoc = new XDocument(
 new XDeclaration("1.0", "utf-8", "yes"),
     new XElement("Invoices",
         new XElement("Invoice",
             new XElement("InvoiceNumber", "s10838652")
         .......

 return xdoc;

}

我用另一种方法:

    public override void RunWintrackConnector()
    {

        XDocument xml = generateXML();

.....

然后我想在每个XML节点中放入数据:(而不是s10838652我想将(string.Concat(bill.invoice,bill.num);)分配给InvoiceNumber节点。)

我有正确的部分但不确定如何访问xml的每个节点:

xmlnode(for example InvoiceNumber) =  Win2.IntegrationXML.XMLMisc.DirtyData.getStringValue(string.Concat(bill.invoice, bill.num)); 

2 个答案:

答案 0 :(得分:0)

您可以使用XElementXDocument来填写所需的值。

var valueToInsert = Win2.IntegrationXML.XMLMisc.DirtyData
    .getStringValue(string.Concat(bill.invoice, bill.num));

XDocument xml = generateXML();
xml.Element("Invoices")
    .Elements("Invoice").First() //this First is just an example
    .Element("InvoiceNumber")
    .Value = valueToInsert;

Element()返回找到的第一个子节点,Elements()获取具有该节点名称的所有子节点的列表。找出你的节点如何嵌套的模式,你应该全部设置。

作为旁注,您可以使用XDocument变量执行上述操作,但我更倾向于将所有内容保留为XElement以增加Linq兼容性。

答案 1 :(得分:0)

xml
    .Elements("Invoices")
    .Elements("Invoice")
    .Elements("InvoiceNumber")
    .First()
    .Value = string.Concat(bill.invoice, bill.num);

编辑 - 查看您的所有发票:

foreach(var invoice in xml.Elements("Invoices").Elements("Invoice"))
{
    invoice.Element("InvoiceNumber").Value = "asdf";
}

如果您熟悉XPath,这相当于选择所有发票和“发票/发票”。