C# XMLParser跳到一组标记中的最后一个标记

C# XMLParser跳到一组标记中的最后一个标记,c#,.net,xml,datatable,xml-parsing,C#,.net,Xml,Datatable,Xml Parsing,我正在将XML文件读入数据表,如下所示: DataTable dt = XMLParser.XMLRead.ReadeFormXMLFile(filePath, "my:myFields"); 但是,它并没有捕获所有字段 有多个PracticerLastName和PracticerFirstName和PracticerNPI: <my:group1> <my:group2> <my:PractitionerFirstName>Joe&l

我正在将XML文件读入数据表,如下所示:

DataTable dt = XMLParser.XMLRead.ReadeFormXMLFile(filePath, "my:myFields");
但是,它并没有捕获所有字段

有多个PracticerLastName和PracticerFirstName和PracticerNPI:

 <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>
问题:什么会导致XML解析器只从
group2
抓取最后一条记录,而忽略其他所有内容?

您可以尝试以下方法:

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工作。我正在使用。

您可以尝试以下方法:

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工作。我正在使用。

请解释否决票,我非常乐意更改/添加信息。我不知道您为什么会获得否决票。问题tho:是否忽略了具有自定义命名空间的字段?这可能与为什么(顺便说一句,我没有xmlparse经验)有关@payo非常感谢您的回复。我是XML新手,所以我不知道这意味着什么:)我读XML样本太快了。尝试将示例xml减少到一个最小的集合,在该集合中,错误会重新出现。然后,清楚地解释哪个字段被跳过或缺少。实际上不可能回答这个问题,因为XML是由
XMLParser.XMLRead.ReadeFormXMLFile
解析的,这是您或您的组织编写的方法。请解释下一票,我非常乐意更改/添加信息。我不知道您为什么会被下一票。问题tho:是否忽略了具有自定义命名空间的字段?这可能与为什么(顺便说一句,我没有xmlparse经验)有关@payo非常感谢您的回复。我是XML新手,所以我不知道这意味着什么:)我读XML样本太快了。尝试将示例xml减少到一个最小的集合,在该集合中,错误会重新出现。然后,清楚地解释跳过或缺少哪个字段。实际上不可能回答这个问题,因为XML是由您或您的组织编写的
XMLParser.XMLRead.ReadeFormXMLFile
解析的。