【问题标题】:Several same node name to a list of string几个相同的节点名到一个字符串列表
【发布时间】:2013-10-09 09:42:54
【问题描述】:

我有一个 XML 文件。

我试过这个查询。但是当我得到节点“Val1”时,我想要一个值为“AAA”和“BBB”的列表

一个想法?

var res = doc.Descendants("Tags")
.Where(p => p.Elements("code")
.Any(c => (string)c.Parent.Attribute("id") == "Val1"))
.Select(i => i.ToString()).ToArray().First();

<?xml version="1.0" encoding="utf-8" ?>
<MyTag>
  <Tags id="Val1">
    <code>AAA</code>
    <code>BBB</code>
  </Tags>
  <Tags id="Val2">
    <code>CCC</code>
    <code>DDD</code>
    <code>EEE</code>
  </Tags> 
</MyTag>

【问题讨论】:

  • doc.Root.Elements("Tags").Single(t =&gt; (string)t.Attribute("id") == "Val1").Elements("code").Select(c =&gt; c.Value)

标签: c# .net xml linq-to-xml


【解决方案1】:

你要么需要:

var res = doc.Descendants("Tags")
.Where(p => p.Elements("code")
.Any(c => (string)c.Parent.Attribute("id") == "Val1"))
.Select(i => i.Elements("code")).ToArray().First();

或者这个:

var res = doc.Descendants("Tags")
.Where(p => p.Elements("code")
.Any(c => (string)c.Parent.Attribute("id") == "Val1"))
.Select(i => i.Elements("code").Select (x => (string)x.Value)).ToArray().First();

第一个会给你一个像&lt;code&gt;AAAA&lt;/code&gt;这样的元素数组,而第二个会给你一个像AAAA这样的字符串数组

【讨论】:

  • .ToArray() 没有功能。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-06-16
  • 1970-01-01
  • 2020-09-16
  • 1970-01-01
  • 2021-10-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多