【问题标题】:filling empty xml nodes with nodes from another xml用来自另一个 xml 的节点填充空的 xml 节点
【发布时间】:2018-04-11 15:42:59
【问题描述】:

文档 1 已满

<_Items>
    <_ItemName>COLOR REVOLUTION LIPSTICK</_ItemName>
    <_ItemQt>18300</_ItemQt>
    <_ItemNumber>1</_ItemNumber>
    <_Unit>шт</_Unit>
    <_ItemContract>
      <_ContractName>03011/1</_ContractName>
      <_ContractNumber>AA/001/2016</_ContractNumber>
      <_ContractDate>2016-11-24</_ContractDate>
    </_ItemContract>
    <_ItemCode>3304100000</_ItemCode>
    <_ItemCost>352529.07</_ItemCost>
    <_ItemPrice>1050.10</_ItemPrice>
  </_Items>

文档 2 已部分填充

<_Items>
    <_ItemName />
    <_ItemQt />
    <_Unit />
    <_ItemNumber />
    <_ItemContract>
      <_ContractName />
      <_ContractNumber />
      <_ContractDate />
    </_ItemContract>
    <_ItemCode />
    <_ItemCostNew>372338.46</_ItemCostNew>
    <_ItemCostOld>186169.21</_ItemCostOld>
    <_ItemPrice />
  </_Items>

那么,如何用文档 1 中的相同元素填充文档 2 中的空值? 我的想法是删除文档 2 中的所有空节点

XDocument xdoc = XDocument.Load(document2);
        xdoc.Descendants("Employee")
            .Where(e => e.Descendants().Any(d => String.IsNullOrEmpty(d.Value)))
            .Remove();

然后从文档 1 中导入所有缺失的元素。但我不知道如何避免覆盖填充节点

【问题讨论】:

    标签: c# xml xml-parsing linq-to-xml


    【解决方案1】:

    只需遍历您的目标节点,为每个节点检查它是否为空,如果不是,则从另一个节点获取它的值。

    【讨论】:

    • 是的,我在想这个,但是这个方法太琐碎和笨拙
    • 如果你有很多节点要迭代,那么你应该考虑另一种解决方案,但只要你有几个节点要迭代,那么一个简单、简单且可行的解决方案就足够了
    • 好吧,我可以用 foreach 循环迭代“项目”部分中的节点。但是,其中一些有子节点。我如何迭代它们?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多