簡體   English   中英

Linq to C#中的XML查詢數據

[英]Linq to XML Querying Data in C#

XML格式

<?xml version="1.0" encoding="utf-8" ?>
<Employees>
  <Employee>
    <EmpId>1</EmpId>
    <Name>Sam</Name>
    <Sex>Male</Sex>
    <Salary>40000</Salary>
    <Phone Type="Home">423-555-0124</Phone>
    <Phone Type="Work">424-555-0545</Phone>
    <Address>
      <Street>7A Cox Street</Street>
      <City>Acampo</City>
      <State>CA</State>
      <Zip>95220</Zip>
      <Country>USA</Country>
    </Address>
  </Employee>
  <Employee>
    <EmpId>2</EmpId>
    <Name>Lucy</Name>
    <Sex>Female</Sex>
    <Salary>20000</Salary>
    <Phone Type="Home">143-555-0763</Phone>
    <Phone Type="Work">434-555-0567</Phone>
    <Address>
      <Street>Jess Bay</Street>
      <City>Alta</City>
      <State>CA</State>
      <Zip>95701</Zip>
      <Country>USA</Country>
    </Address>
  </Employee>

LINQ表達式C#

var Pro = from u in doc.Descendants("Employee") select u;
        foreach (var x in Pro)
        {
            Response.Write(string.Format("EMP ID: {0}, Emp Name: {1}", x.Element("EmpId"), x.Element("Name")));
        }

我能夠查詢EmpID,名稱,薪水等字段。

但是,如何查詢地址字段,如街道,城市,州,郵政編碼,國家/地區?

提前致謝。

我也將按照Reniuz的建議進行操作,然后反序列化為對象,但這是您當前操作方式的示例:

foreach (var x in Pro)
        {
            Response.Write("EMP ID: {0}, Emp Name: {1}\r\n", x.Element("EmpId"), x.Element("Name"));
            var adrs = x.Descendants("Address");
            foreach (var a in adrs)
            {
                Response.Write("\tAddress Street: {0}, City: {1}\r\n", a.Element("Street"), a.Element("City"));    
            }
        }

采用

x.Descendants("Address").First().Element("Street") 

將XML放入變量並使用Like

XDocument doc = XDocument.Parse(XMLVariableString);    

var FirstPart = from node in doc.Descendants("items") select node; //Select Data from doc using 

List<ListName> valuesNodes = new List<ListName>(); //create any with i.e <==

創建一個與XML具有相同名稱的List ,並為包含Address的所有字段的Address創建Sub List

使用與您使用的相同查詢, FirstPart選擇。

現在,您可以輕松處理var FirstPart數據

通過使用x.Elements("Address")首先選擇所有Address元素,可以訪問您要查找的Address元素。 然后可以使用.Element()函數選擇每個嵌套的Address元素。

因此, Response.Write()的參數應類似於:

x.Elements("Address").Element("Street");

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM