Document 1 is full
<_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>
Document 2 is partially filled
<_Items>
<_ItemName />
<_ItemQt />
<_Unit />
<_ItemNumber />
<_ItemContract>
<_ContractName />
<_ContractNumber />
<_ContractDate />
</_ItemContract>
<_ItemCode />
<_ItemCostNew>372338.46</_ItemCostNew>
<_ItemCostOld>186169.21</_ItemCostOld>
<_ItemPrice />
</_Items>
So, how can i fill empty values in document 2 by same elements in document 1? My idea is to delete all empty nodes in document 2
XDocument xdoc = XDocument.Load(document2);
xdoc.Descendants("Employee")
.Where(e => e.Descendants().Any(d => String.IsNullOrEmpty(d.Value)))
.Remove();
And then import all missing elements from document 1. But I don't know how to avoid overwriting of filled nodes
答案 0 :(得分:0)
简单地遍历目标节点,为每个节点检查它是否为空,如果不是,则从另一个节点获取它的值。