如何在每个 xml 节点中放置值
本文关键字:节点 xml | 更新日期: 2023-09-27 18:18:08
我用 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(字符串。Concat(bill.invoice, bill.num(;)到"发票编号"节点。
我有正确的部分,但不确定如何访问 xml 的每个节点:
xmlnode(for example InvoiceNumber) = Win2.IntegrationXML.XMLMisc.DirtyData.getStringValue(string.Concat(bill.invoice, bill.num));
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,这相当于选择带有"发票/发票"的所有发票。
您可以使用
XElement
或XDocument
来编写所需的值。
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 兼容性。