首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使用Linq检索后代

如何使用Linq检索后代
EN

Stack Overflow用户
提问于 2015-09-30 06:50:47
回答 2查看 214关注 0票数 0

我有一个xml,在其中我循环遍历每一个node,并且我想检索xhtml元素,我尝试了

代码语言:javascript
运行
复制
foreach (XElement element in xdoc.Descendants(namespace))
{
  var result = element.Descendants(namespace + "xhtml")
}

但是枚举总是返回empty

数据:

代码语言:javascript
运行
复制
<namespace xmlns="http://www.find.org/schemas/">
  <date>2015</date>
  <xhtml:link xmlns:xhtml="xhtml:link" rel="alternate" />
  <xhtml:link xmlns:xhtml="xhtml:link" rel="alternate" />
  <xhtml:link xmlns:xhtml="xhtml:link" rel="alternate" />
</namespace>
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-09-30 07:09:49

链接元素位于自己的名称空间中,在名称空间xhtml:link中称为xhtml:link。您需要使用它来选择元素。

代码语言:javascript
运行
复制
 // namespace of yout document
 var ns = (XNamespace) "http://www.find.org/schemas"; 
 // namespace of link elements
 var nsXhtml = (XNamespace) "xhtml:link";

 var result = xdoc.Root.Elements(nsXhtml+ "link");
 result.Dump();

在xml中,您应该注意xmlns:构造,这些构造可以位于顶部,也可以在元素上定义。使用no或错误的命名空间将找不到您的元素。

票数 1
EN

Stack Overflow用户

发布于 2015-09-30 07:52:08

尝尝这个

代码语言:javascript
运行
复制
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml;
using System.Xml.Linq;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            string input =
                "<namespace xmlns=\"http://www.find.org/schemas/\">" +
                  "<date>2015</date>" +
                  "<xhtml:link xmlns:xhtml=\"xhtml:link\" rel=\"alternate\" />" +
                  "<xhtml:link xmlns:xhtml=\"xhtml:link\" rel=\"alternate\" />" +
                  "<xhtml:link xmlns:xhtml=\"xhtml:link\" rel=\"alternate\" />" +
                "</namespace>";

            XDocument xdoc = XDocument.Parse(input);

            List<XElement> links = xdoc.Descendants().Where(x => x.Name.LocalName == "link").ToList();
        }
    }
}​
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32859612

复制
相关文章

相似问题

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