簡體   English   中英

將多元素附加到XmlDocument

[英]Appending multi-element to XmlDocument

我有一個看起來像這樣的數據:

List<Deal> deals = new List<Deal>
{
    new Deal
    {
        DealNo = "S001",
        DealItem = new List<string> { "A001", "A002", "A003" }
    },
    new Deal
    {
        DealNo = "S002",
        DealItem = new List<string> { "T001", "T002" }
    }
};

我希望我的輸出看起來像這樣:

<Resource>
  <ResourceID>
    <ResourceBody>
      <DealNo>S001</DealNo>
      <ItemList>
        <Item>A001</Item>
        <Item>A002</Item>
        <Item>A003</Item>
      </ItemList>
      <DealNo>S002</DealNo>
      <ItemList>
        <Item>T001</Item>
        <Item>T002</Item>
      </ItemList>
    </ResourceBody>
  </ResourceID>
</Resource>

我堅持嘗試遍歷ItemList元素並在其中添加節點。 這就是我現在所擁有的:

var xdoc = new XmlDocument();
// This structure is from other parts of the system, I can't change this
xdoc.LoadXml("<Resource><ResourceID><ResourceBody></ResourceBody></ResourceID></Resource>");

foreach (var deal in deals)
{
    var node = xdoc.CreateNode("element", "DealNo", "");
    node.InnerText = deal.DealNo;
    var singleNode = xdoc.SelectSingleNode("Resource/ResourceID/ResourceBody");
    singleNode.AppendChild(node);

    node = xdoc.CreateElement("ItemList");
    singleNode = xdoc.SelectSingleNode("Resource/ResourceID/ResourceBody");
    singleNode.AppendChild(node);
}

如何遍歷所有“交易”並附加所有ItemList元素?

約束:我被迫使用XmlDocument,它是舊代碼的一部分。

使用您的示例,只需添加一個新循環即可添加您的交易項目:

foreach (var deal in deals) {
    var node = xdoc.CreateNode("element", "DealNo", "");
    node.InnerText = deal.DealNo;
    var singleNode = xdoc.SelectSingleNode("Resource/ResourceID/ResourceBody");
    singleNode.AppendChild(node);

    node = xdoc.CreateElement("ItemList");
    singleNode = xdoc.SelectSingleNode("Resource/ResourceID/ResourceBody");

    // Add deal items here...
    foreach (string dealItem in deal.DealItem) {
        var dealItemNode = xdoc.CreateNode("element", "Item", "");
        dealItemNode.InnerText = dealItem;
        node.AppendChild(dealItemNode);
    }

    singleNode.AppendChild(node);
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM