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");
上面的代码没有给我结果,它回来是空的。
我如何获得姓名&每个页眉和每个页脚的详细信息标记的数字标记?我可以使用ds.ReadXML separtely创建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
}
答案 0 :(得分:1)
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")
};