使用LINQ到XML ASP.Net C#查询嵌套的XML元素 [英] Query Nested XML Elements using Linq-to-XML ASP.Net C#
本文介绍了使用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屋!
查看全文