首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >带有XDocument命名空间问题的Linq-to-XML

带有XDocument命名空间问题的Linq-to-XML
EN

Stack Overflow用户
提问于 2012-07-19 07:09:03
回答 1查看 2K关注 0票数 2

我有一个XML文档:

代码语言:javascript
复制
<?xml version="1.0" encoding="utf-8"?>
<directoryresponse xmlns="https://www.sisow.nl/Sisow/REST" version="1.0.0">
  <directory>
    <issuer>
      <issuerid>01</issuerid>
      <issuername>ABN Amro Bank</issuername>
    </issuer>
    <issuer>
      <issuerid>02</issuerid>
      <issuername>ASN Bank</issuername>
    </issuer>
  </directory>
</directoryresponse>

这是行不通的:

代码语言:javascript
复制
var banks = doc.Descendants("issuer").Select(x => 
    new Bank(Convert.ToInt32(x.Element("issuerid").Value), x.Element("issuername").Value)).ToList();

但是当我手动删除directoryresponse命名空间xmlns="https://www.sisow.nl/Sisow/REST"时,它就能工作了!名称空间url是一个404。那么,如果名称空间是404,为什么xdoc不忽略它呢?

这也不起作用:var banks = doc.Elements().Where(e => e.Name.LocalName == "issuer" ).Select(...

主要问题是:如何修改代码,使其忽略404命名空间?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-07-19 07:13:07

URL本身在这里是不相关的-它只是名称空间的一个标记,真的。我不相信LINQ会尝试获取它。

但是,您需要使用它来构造要搜索的XName

代码语言:javascript
复制
XNamespace ns = "https://www.sisow.nl/Sisow/REST";
var banks = doc.Descendants(ns + "issuer")
               .Select(x => new Bank((int) x.Element(ns + "issuerid"),
                                     (string) x.Element(ns + "issuername"))
               .ToList();
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11555609

复制
相关文章

相似问题

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