簡體   English   中英

通過readXML讀取子標簽

[英]Reading child tags via readXML

Dataset ds=new DataSet();
ds.ReadXml("path of the xml");

但是ds有多個表,我想分別提取Header和Footer的詳細信息標簽信息:

XElement xElement = XElement.Parse(ds.GetXml().ToString());
  var items =xElement
                  .Descendants("Header");

上面的代碼沒有給我結果,它返回為空。

如何獲得每個頁眉和頁腳的Details標簽的Name和Number標簽? 我可以分別使用ds.ReadXML創建2個數據集嗎?

這是我的XML:

<?xml version="1.0" encoding="UTF-8"?>
<Mapping>
 <Header>
   <Row>
      <Details>
      <Name>Name</Name> 
         <DataType>string</DataType>
         <Value>Mark</Value>
      </Details>
      <Details>
      <Name>Number</Name> 
         <DataType>int</DataType>
         <Value>1</Value>
      </Details>
   </Row>    
 </Header>
<Footer>
   <Row>
      <Details>
      <Name>Name</Name> 
         <DataType>string</DataType>
         <Value>John</Value>
      </Details>
      <Details>
      <Name>Number</Name> 
         <DataType>int</DataType>
         <Value>2</Value>
      </Details>
   </Row>
</Footer>
</Mapping>

數據集1:標題信息-這樣我就可以遍歷行

數據集2:頁腳信息-這樣我就可以遍歷行

還是有其他方法分別提取名稱和數字? 這里的目的是獲取數據並建立一個C#類,例如

public class Header
{
 public Header(){}

 public string Name;
 public int Number

}


public class Footer
{
 public Footer(){}

 public string Name;
 public int Number

}
XElement mapping = XElement.Parse(ds.GetXml().ToString());
var query = from d in mapping.Descendants("Details")
            select new {
                Name = (string)d.Element("Name"),
                Number = (int)d.Element("Number")
            };

如果要構建類實例:

var headers = from d in mapping.Element("Header")
                               .Element("Row").Elements("Details")
              select new Header {
                  Name = (string)d.Element("Name"),
                  Number = (int)d.Element("Number")
              };

獲取頁腳是相同的,除了您應該首先選擇"Footer"元素。


您也可以使用XPath選擇元素:

var headers = from d in mapping.XPathSelectElements("Header/Row/Details")
              select new Header {
                  Name = (string)d.Element("Name"),
                  Number = (int)d.Element("Number")
              };

暫無
暫無

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

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