首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在不按名称在XElements中指定元素的情况下返回LINQ列表

如何在不按名称在XElements中指定元素的情况下返回LINQ列表
EN

Stack Overflow用户
提问于 2012-12-14 14:09:01
回答 3查看 1.3K关注 0票数 0

给定的XML文件如下:

代码语言:javascript
复制
<?xml version="1.0" encoding="utf-8"?>
<Root>
   <Policy id="832cbfc6-a451-4d77-a995-4ceb9d3bbe01" username ="DCassidy">     
      <Title>Test 1</Title>    
  </Policy>
  <Policy id="832cbfc6-a451-4d77-a995-4ceb9d3bbe02" userName ="DCassidy">
    <Title>Test 2</Title>
 </Policy>........and so on

是否可以使用LINQ返回所有“Policy”元素及其包含的元素,而不必指定以下每个元素:

代码语言:javascript
复制
var subset = doc.Elements("Policy").SelectMany(x => new[] { x.Element("Title").Value });

我需要能够动态地向文件中添加元素,过滤并返回一个子集.

最好是返回一个XElemets集合,这样以后我就可以调用:

代码语言:javascript
复制
subset.CreateReader() on.

编辑

说得更清楚。我希望根据username属性返回所有Policy对象及其后代。我想要接受这个子集并在它上使用CreateReader(),

有人能帮忙吗?

谢谢

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-12-14 14:14:26

您可以使用没有指定名称的Elements重载来获取所有子元素。

代码语言:javascript
复制
var xml = @"
<Root>
   <Policy id='832cbfc6-a451-4d77-a995-4ceb9d3bbe01' username ='DCassidy'>     
      <Title>Test 1</Title>    
  </Policy>
  <Policy id='832cbfc6-a451-4d77-a995-4ceb9d3bbe02' userName ='DCassidy'>
    <Title>Test 2</Title>
 </Policy>
</Root>
";
var xElement = XElement.Parse(xml);
var subset = xElement.Elements("Policy").SelectMany(e => e.Elements());

subset是一个IEnumerable<XElement>,其内容如下:

代码语言:javascript
复制
<Title>Test 1</Title> 
<Title>Test 2</Title> 
票数 0
EN

Stack Overflow用户

发布于 2012-12-14 14:14:13

在不指定元素名称的情况下,使用Elements()方法获取所有直接后代:

XDocument.Root.Elements()

票数 0
EN

Stack Overflow用户

发布于 2012-12-14 14:14:27

你的意思还不太清楚,但也许:

代码语言:javascript
复制
var subset = doc.Elements("Policy").Descendants();

代码语言:javascript
复制
var subset = doc.Elements("Policy").DescendantsAndSelf();

这将得到所有的后代,而不仅仅是直接的后代。如果你能更清楚地了解你想要达到的目标,那会有帮助的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13880268

复制
相关文章

相似问题

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