首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >通过readXML读取子标记

通过readXML读取子标记
EN

Stack Overflow用户
提问于 2013-08-21 23:17:34
回答 1查看 159关注 0票数 0
代码语言:javascript
复制
Dataset ds=new DataSet();
ds.ReadXml("path of the xml");

但是ds有多个表,我想分别提取页眉和页脚的详细信息:

代码语言:javascript
复制
XElement xElement = XElement.Parse(ds.GetXml().ToString());
  var items =xElement
                  .Descendants("Header");

上面的代码没有给出结果,而是返回为空的。

我怎样才能得到每个页眉和每页脚的详细信息标签的名称和数字标签?我可以使用ds.ReadXML分别创建两个数据集吗?

以下是我的XML:

代码语言:javascript
复制
<?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#类,如

代码语言:javascript
复制
public class Header
{
 public Header(){}

 public string Name;
 public int Number

}


public class Footer
{
 public Footer(){}

 public string Name;
 public int Number

}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-08-21 23:32:43

代码语言:javascript
复制
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")
            };

如果您想构建类实例:

代码语言:javascript
复制
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来选择元素:

代码语言:javascript
复制
var headers = from d in mapping.XPathSelectElements("Header/Row/Details")
              select new Header {
                  Name = (string)d.Element("Name"),
                  Number = (int)d.Element("Number")
              };
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18369181

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档