使用LINQ到XML ASP.Net C#查询嵌套的XML元素 [英] Query Nested XML Elements using Linq-to-XML ASP.Net C#

查看:155
本文介绍了使用LINQ到XML ASP.Net C#查询嵌套的XML元素的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在我的ASP.Net C#应用程序,

in my ASP.Net C# application,

我想读一个嵌套的XML元素,匿名类型的集合。

I am trying to read a nested XML Elements to an Anonymous type collections.

下面是XML样本

    <MedicationDispensed xmlns="http://www.ncpdp.org/schema/SCRIPT">
  <DrugDescription>OXYCODONE W/APAP 5/325 TAB</DrugDescription>
  <DrugCoded>
    <ProductCode>00406051205</ProductCode>
    <ProductCodeQualifier>ND</ProductCodeQualifier>
  </DrugCoded>
  <Quantity>
    <Qualifier>00</Qualifier>
    <Value>60.0</Value>
    <CodeListQualifier>87</CodeListQualifier>
  </Quantity>
  <DaysSupply>15</DaysSupply>
  <LastFillDate>2012-04-03</LastFillDate>
  <Pharmacy>
    <Identification>
      <NCPDPID>1234567</NCPDPID>
    </Identification>
    <StoreName>WALGREENS #00000</StoreName>
    <Address>
      <AddressLine1>1 CENTRAL STREET</AddressLine1>
      <City>INDIANAPOLIS</City>
      <State>IN</State>
      <ZipCode>46201</ZipCode>
    </Address>
    <PhoneNumbers>
      <Phone>
        <Number>8005551212</Number>
        <Qualifier>TE</Qualifier>
      </Phone>
    </PhoneNumbers>
  </Pharmacy>
  <Prescriber>
    <Identification>
      <DEANumber>KR4184999</DEANumber>
    </Identification>
    <Name>
      <LastName>SMITH</LastName>
      <FirstName>JOHN</FirstName>
      <MiddleName>E</MiddleName>
    </Name>
    <Address>
      <AddressLine1>MERCY CLINIC</AddressLine1>
      <City>ST. PAUL</City>
      <State>MN</State>
      <ZipCode>55101</ZipCode>
    </Address>
  </Prescriber>
</MedicationDispensed>

我成功了到这里

 var MedicationDispensed = (from elem in xdoc.Descendants(NameSpace + "MedicationDispensed")
                                           .Descendants(NameSpace + "DrugCoded")
                                           //.Descendants(NameSpace + "Quantity")
                                       select new
                                       {
                                           DrugDescription = elem.Parent.Element(NameSpace + "DrugDescription").Value,
                                           ProductCode = elem.Element(NameSpace + "ProductCode").Value,
                                           ProductCodeQualifier = elem.Element(NameSpace + "ProductCodeQualifier").Value,
                                           //Qualifier = elem.Parent.Element(NameSpace + "Qualifier").Value,
                                           //Value = elem.Element(NameSpace + "Value").Value,
                                           //CodeListQualifier = elem.Element(NameSpace + "CodeListQualifier").Value,
                                           DaysSupply = elem.Parent.Element(NameSpace + "DaysSupply").Value,
                                           LastFillDate = elem.Parent.Element(NameSpace + "LastFillDate").Value
                                       }).ToList();

我无法查询数量,并进一步我对药房和prescriber做。
任何帮助将大大AP preciated。

I am not able to query for Quantity and further i have to do for Pharmacy and Prescriber. Any help would greatly be appreciated.

推荐答案

好吧,我得到了我的答案与另一个职位的<一个帮助href=\"http://stackoverflow.com/questions/4359620/how-to-query-this-xml-in-linq\">StackOverflow

Well I got my answer with the help of another post in StackOverflow

下面是我的code,以达到我想要的。

Here is my code to achieve what i want.

 var MedicationDispensed = (from MD in xdoc.Descendants(NameSpace + "MedicationDispensed")
                                       let DrugCoded = MD.Element(NameSpace + "DrugCoded")
                                       let Quantity = MD.Element(NameSpace + "Quantity")
                                       let Pharmacy = MD.Element(NameSpace + "Pharmacy")
                                       let phIdentification = Pharmacy.Element(NameSpace + "Identification")
                                       let phAddress = Pharmacy.Element(NameSpace + "Address")
                                       let phPhoneNumbers = Pharmacy.Element(NameSpace + "PhoneNumbers")
                                       let phPhone = phPhoneNumbers.Element(NameSpace + "Phone")
                                       let Prescriber = MD.Element(NameSpace + "Prescriber")
                                       let prIdentification = Prescriber.Element(NameSpace + "Identification")
                                       let prName = Prescriber.Element(NameSpace + "Name")
                                       let prAddress = Prescriber.Element(NameSpace + "Address")
                                       select new
                                       {
                                           DrugDescription = MD.Element(NameSpace + "DrugDescription").Value,
                                           ProductCode = DrugCoded.Element(NameSpace + "ProductCode").Value,
                                           ProductCodeQualifier = DrugCoded.Element(NameSpace + "ProductCodeQualifier").Value,
                                           Qualifier = Quantity.Element(NameSpace + "Qualifier").Value,
                                           Value = Quantity.Element(NameSpace + "Value").Value,
                                           CodeListQualifier = Quantity.Element(NameSpace + "CodeListQualifier").Value,
                                           DaysSupply = MD.Element(NameSpace + "DaysSupply").Value,
                                           LastFillDate = MD.Element(NameSpace + "LastFillDate").Value,
                                           phStoreName = Pharmacy.Element(NameSpace + "StoreName").Value,
                                           phNCPDPID = phIdentification.Element(NameSpace + "NCPDPID").Value,
                                           phAddress1 = phAddress.Element(NameSpace + "AddressLine1").Value,
                                           phCity = phAddress.Element(NameSpace + "City").Value,
                                           phState = phAddress.Element(NameSpace + "State").Value,
                                           phZipcode = phAddress.Element(NameSpace + "ZipCode").Value,
                                           phPhoneNumber = phPhone.Element(NameSpace + "Number").Value,
                                           phQualifier = phPhone.Element(NameSpace + "Qualifier").Value,
                                           prDEANumber = prIdentification.Element(NameSpace + "DEANumber").Value,
                                           prLastName = prName.Element(NameSpace + "LastName").Value,
                                           prFirstName = prName.Element(NameSpace + "FirstName").Value,
                                           prMiddleName = prName.Element(NameSpace + "MiddleName").Value,
                                           prAddress1 = prAddress.Element(NameSpace + "AddressLine1").Value,
                                           prCity = prAddress.Element(NameSpace + "City").Value,
                                           prState = prAddress.Element(NameSpace + "State").Value,
                                           prZipCode = prAddress.Element(NameSpace + "ZipCode").Value
                                       }).ToList();

希望这将是人谁是需要同样的工作是有用的。

Hope this will be useful for someone who is in need of same work.

这篇关于使用LINQ到XML ASP.Net C#查询嵌套的XML元素的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆