XMLParser中跳过最后标签在标签集合

问题描述:

我读一个XML文件转换成一个数据表是这样的:XMLParser中跳过最后标签在标签集合

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

但没有捕捉到的所有字段。

有多种practitionerlastnames和practitionerfirstnames和practitionerNPIs:但是没有被列入他们

<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> 

。它目前正在做什么,走的是最后一个记录group2,而忽略所有记录前述这一项:

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

问题:什么会导致XML解析器从group2抢到只有最后一条记录,而忽略其他一切?

+0

请解释downvote,我很乐意改变/添加信息 – 2012-04-27 22:40:36

+0

我不知道你为什么得到了downvotes。问题:这些字段是否忽略了具有自定义名称空间的字段?这可能与为什么(我没有xmlparse经验btw) – payo 2012-04-27 22:59:45

+0

@payo非常感谢您的回应。我是新来的XML,所以我不知道这是什么意思:) – 2012-04-27 23:04:05

你可以试试这个:

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 extension method from here