1

次のようなデータテーブルに XML ファイルを読み込んでいます。

DataTable dt = XMLParser.XMLRead.ReadeFormXMLFile(filePath, "my:myFields");

ただし、すべてのフィールドをキャプチャしているわけではありません。

複数のプラクティショナーの姓とプラクティショナーのファーストネームとプラクティショナーの NPI があります。

 <my:group1>
    <my:group2>
      <my:PractitionerFirstName>Joe</my:PractitionerFirstName>
      <my:PractitionerLastName>Limits</my:PractitionerLastName>
      <my:PractitionerNPI>0987654321</my:PractitionerNPI>
      <my:PractitionerDegree>MD</my:PractitionerDegree>
    </my:group2>
    <my:group2 xmlns:my="http://schemas.microsoft.com/office/infopath/2003/myXSD/2012-02-06T05:56:10">
       <my:PractitionerFirstName>Him</my:PractitionerFirstName>
       <my:PractitionerLastName>Haw</my:PractitionerLastName>
       <my:PractitionerNPI>1234567890</my:PractitionerNPI>
       <my:PractitionerDegree>PA</my:PractitionerDegree>
     </my:group2>
     <my:group2 xmlns:my="http://schemas.microsoft.com/office/infopath/2003/myXSD/2012-02-06T05:56:10">
        <my:PractitionerFirstName>Mike</my:PractitionerFirstName>
        <my:PractitionerLastName>Kim</my:PractitionerLastName>
        <my:PractitionerNPI>1234567890</my:PractitionerNPI>
        <my:PractitionerDegree>DO</my:PractitionerDegree>
     </my:group2>
     <my:group2 xmlns:my="http://schemas.microsoft.com/office/infopath/2003/myXSD/2012-02-06T05:56:10">
       <my:PractitionerFirstName>Vanilla </my:PractitionerFirstName>
       <my:PractitionerLastName>Ice</my:PractitionerLastName>
       <my:PractitionerNPI>1231231231</my:PractitionerNPI>
       <my:PractitionerDegree>MD</my:PractitionerDegree>
     </my:group2>
     <my:group2 xmlns:my="http://schemas.microsoft.com/office/infopath/2003/myXSD/2012-02-06T05:56:10">
       <my:PractitionerFirstName>Kim</my:PractitionerFirstName>
       <my:PractitionerLastName>John</my:PractitionerLastName>
       <my:PractitionerNPI>1234567890</my:PractitionerNPI>
       <my:PractitionerDegree>DO</my:PractitionerDegree>
     </my:group2>
  </my:group1>

ただし、それらは含まれていません。現在行われているのは、LAST レコードを取り込み、group2これより前のすべてのレコードを無視することです。

<my:PractitionerFirstName>Kim</my:PractitionerFirstName>
<my:PractitionerLastName>John</my:PractitionerLastName>
<my:PractitionerNPI>1234567890</my:PractitionerNPI>
<my:PractitionerDegree>DO</my:PractitionerDegree>

質問: XML パーサーが最後のレコードのみを取得し、他のgroup2すべてを省略する原因は何ですか?

4

1 に答える 1

1

これを試すことができます:

XElement root = XElement.Load(filePath);
var list = root.Elements().Select(x => new
    {
        FirstName = x.Get("PractitionerFirstName", string.Empty),
        LastName = x.Get("PractitionerLastName", string.Empty),
        NPI = x.Get("PractitionerNPI", string.Empty),
        Degree = x.Get("PractitionerDegree", string.Empty)
    }).ToArray();

これは、提供したxmlを使用して機能します。Get 拡張メソッド from hereを使用しています。

于 2012-04-29T00:30:56.587 に答える