私はこのようなXMLファイルを持っています...
<return>
<availableOptions>
<premiums>
<item>
<productCode>Poroduct Code 1</productCode>
<productDescription>Product Desc 1</productDescription>
<coverageCode>Coverage Code 1</coverageCode>
<coverageDescription>Coverage Description 1</coverageDescription>
</item>
<item>
<productCode>Poroduct Code 2</productCode>
<productDescription>Product Desc 2</productDescription>
<coverageCode>Coverage Code 2</coverageCode>
<coverageDescription>Coverage Description 2</coverageDescription>
<coverageOptions>
<item>
<label>label here</label>
<value>true</value>
<key>key</key>
</item>
<item>
<label>label here</label>
<value>true</value>
<key>key</key>
</item>
</coverageOptions>
<surcharges/>
</item>
<item>
etc...
</item>
<item>
etc...
</item>
</premiums>
</availableOptions>
</return>
私の目標は次のとおりです。すべての一意のカバレッジコードを見つける
次の LINQ コードがあります。
XDocument xdoc = XDocument.Load("data.xml");
var linq = from item in xdoc.Descendants("premiums").Descendants("item")
select new
{
ProductCode = item.Element("productCode").Value,
CoverageCode = item.Element("coverageCode").Value
};
foreach (var node in linq)
{
Console.WriteLine("Product Code: " + node.ProductCode + ", Coverage Code: " + node.CoverageCode);
}
最初<item>
は正しく出力されます。ただし、2 番目になると、ノードでandを探しているため<item>
、エラーがスロー されますが、何もありません。 Object reference not set to an instance of an object
productCode
coverageCode
coverageOptions/item
私はそれをそこに見せたくありません。
<item>
代わりにLINQを最初のものだけに集中させるにはどうすればよいですか? また、productCode と coverageCode を区別したいと思います。この XML ファイルに<item>
は、同じ productCode ノードと coverageCode ノードを持つものが複数あります。
事前にどうもありがとうございました!