[英]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.