首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >选择具体节点的数据个数

选择具体节点的数据个数
EN

Stack Overflow用户
提问于 2013-04-22 21:52:49
回答 2查看 82关注 0票数 0

我有下面这段代码

代码语言:javascript
复制
XmlDocument docu = new XmlDocument();
        docu.Load(file);
XmlNodeList lst = docu.GetElementsByTagName("name");
                        foreach (XmlNode n in lst)
                        {
                            string text = n.InnerText;
    var types = doc.Element("program").Element("program-function").Element("function").Descendants("type").Where(x => x.Value == text).Select(c => c.Value).ToArray();
    }

我的xml如下所示

代码语言:javascript
复制
<program> 
  <program-function> 
    <function>
    <name>add</name> 
    <return-type>double</return-type> 
    <params> 
     <type>double</type> 
     <type-value>a</type-value> 
     <type>double</type> 
     <type-value>b</type-value> 
     <type>string</type> 
     <type-value>c</type-value> 
    </params> 
   <body> return a + b + c; </body> 
</function> 
  <function>
   <name>test</name> 
   <return-type>int</return-type> 
   <params> 
     <type>double</type> 
     <type-value>a</type-value> 
     <type>double</type> 
     <type-value>b</type-value> 
     </params> 
   <body> return a + b; </body> 
  </function> 
 </program-function> 
</program>

我需要能够获得每个<name><type>数量

add的结果应为3= types.count() = 3

测试结果应为2= types.count() = 2

有什么建议吗?

编辑:如果我想检索types中的每个值?即。add应包含abctest应包含ab。我喜欢将其存储在一个数组中,以便更容易地检索

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-04-22 22:00:16

如何使用Linq to Xml

代码语言:javascript
复制
 var xDoc = XDocument.Parse(xml);
var functions = xDoc.Descendants("function")
                .Select(f => new
                {
                    Name = f.Element("name").Value,
                    Types = f.Descendants("type").Select(t=>t.Value).ToList(),
                    //Types = f.Descendants("type").Count()
                    TypeValues = f.Descendants("type-value").Select(t=>t.Value).ToList()
                })
                .ToList();
票数 1
EN

Stack Overflow用户

发布于 2013-04-22 22:00:00

试试这个:

代码语言:javascript
复制
XDocument doc = XDocument.Load(your file);
var vals = doc.Element("program").Element("program-function").Elements("function");

var result = vals.Select(i => 
                     new { name = i.Element("name"), 
                           count = i.Elements("type").Count() }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16148898

复制
相关文章

相似问题

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