0

我已经用 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)); 
4

2 回答 2

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 兼容性。

于 2013-06-11T20:46:48.270 回答
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,这相当于选择所有带有“Invoices/Invoice”的发票。

于 2013-06-11T20:47:22.413 回答