1

次の XML ですべての ItemDetail ノードを取得する方法がわかりません。

<?xml version="1.0" encoding="UTF-8"?>
<AssessmentMetadata xmlns="http://tempuri.org/AssessmentMetadata.xsd">
   <ItemDetails>
    <ItemName>I1200</ItemName>
    <ISC_Inactive_Codes>NS,NSD,NO,NOD,ND,NT,SP,SS,SSD,SO,SOD,SD,ST,XX</ISC_Inactive_Codes>
    <ISC_StateOptional_Codes>NQ,NP</ISC_StateOptional_Codes>
  </ItemDetails>
  <ItemDetails>
    <ItemName>I1300</ItemName>
    <ISC_Inactive_Codes>NS,NSD,NO,NOD,ND,NT,SP,SS,SSD,SO,SOD,SD,ST,XX</ISC_Inactive_Codes>
    <ISC_StateOptional_Codes>NQ,NP</ISC_StateOptional_Codes>
  </ItemDetails>
  <ItemDetails>
    <ItemName>I1400</ItemName>
    <ISC_Active_Codes>NC</ISC_Active_Codes>
    <ISC_Inactive_Codes>NS,NSD,NO,NOD,ND,NT,SP,SS,SSD,SO,SOD,SD,ST,XX</ISC_Inactive_Codes>
    <ISC_StateOptional_Codes>NQ,NP</ISC_StateOptional_Codes>
  </ItemDetails>
</AssessmentMetadata>

私は多くのことを試しましたが、名前空間の問題である可能性があると考えているので、これが私の最後の試みです:

var xdoc = XDocument.Load(asmtMetadata.Filepath);
var assessmentMetadata = xdoc.XPathSelectElement("/AssessmentMetadata");
4

1 に答える 1

2

デフォルトの名前空間を取得して、クエリを実行するときにそれを使用する必要があります。

var ns = xdoc.Root.GetDefaultNamespace();
var query = xdoc.Root.Elements(ns + "ItemDetails");

どの要素にも接頭辞を付ける必要があります。たとえば、次のクエリはすべてのItemName値を取得します。

var itemNames = xdoc.Root.Elements(ns + "ItemDetails")
                    .Elements(ns + "ItemName")
                    .Select(n => n.Value);
于 2012-07-16T18:34:32.593 に答える