2017-10-30 20 views
0

文献1別のXMLのノードと空のXMLノードを充填

<_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が部分的にはどのように同一の要素によって文書2に空の値を入力することができ、したがって

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

を充填されている一杯になります資料1? 私の考えは、単にあなたを反復文書2

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

内のすべての空のノードを削除してから、文書1から不足しているすべての要素をインポートしかし、私は満たされたノード

答えて

0

の上書きを避けるために、方法がわからないことです各ノードチェックのためにそれが空であるかどうかチェックし、そうでなければ他のノードから値を取得する。

+0

はい私はこれについて考えていますが、この方法はあまりにも些細で不器用です –

+0

反復するノードが多い場合は別の解決策を考えるべきですが、反復するノードが少ない場合は、ソリューションは十分です – Siraf

+0

Okey、foreachループで "Items"セクションのノードを繰り返します。しかし、そのうちのいくつかにはチルドノードがあります。どのようにそれらを反復することができますか? –