【问题标题】:Get all attribute values of elements in XDocuments获取 XDocuments 中元素的所有属性值
【发布时间】:2013-11-21 06:44:55
【问题描述】:

我想在XDocument中获取相同元素的所有属性值

例如

   <guideline >
     <title>hello world</title>
     <breadcrumb>    
      <ulink url="1.htm">hello world</ulink>     
     </breadcrumb>
     <breadcrumb>    
       <ulink url="2.htm">Chronic Care</ulink>      
     </breadcrumb>
     <breadcrumb>    
       <ulink url="3.htm">hello world</ulink>
       <emphasis role="bold"> &gt;</emphasis>
       <ulink url="4.htm">hello world</ulink>      
     </breadcrumb>
     <breadcrumb>          
      <ulink url="5.htm">hello world</ulink>
      <emphasis role="bold"> &gt;</emphasis>
      <ulink url="8.htm">hello world</ulink>    
      </breadcrumb>
      <breadcrumb>            
        <ulink url="6.htm">hello world</ulink>
        <emphasis role="bold"> &gt;</emphasis>
        <ulink url="7.htm">hello world</ulink>            
      </breadcrumb>
  </guideline>

如果我有这种 xml,我想要 &lt;ulink&gt; 的所有 url 值而不遍历每个元素。

我已经尝试过了,但对我不起作用:

var urls = from vector in this.root.Descendants(xmlns + "ulink") 
           select  vector.Attribute("url").Value;

【问题讨论】:

  • 你收到DoesNotWorkException了吗?
  • from vector in this.root.Descendants(xmlns + "ulink") 是否可以获取元素?
  • 没有例外,它没有任何价值。我刚试过,this.root.Descendants(xmlns + "ulink") 但这都不返回值
  • 在这种情况下,我认为您的命名空间可能有问题。可能是拼写错误
  • 谢谢你是对的,我试图将 xmldocument 解析为 XDocument。并改用 xdocument 玩。也许我应该继续使用 xmldocument。

标签: c# xml linq-to-xml


【解决方案1】:

既然你已经确认你的 xml 中没有任何命名空间,你可以取消 xmlns,然后它应该可以工作了。

var urls = from vector in this.root.Descendants("ulink") 
           select  vector.Attribute("url").Value;

【讨论】:

    猜你喜欢
    • 2020-08-24
    • 2021-08-26
    • 2018-01-07
    • 2015-12-08
    • 2021-04-17
    • 1970-01-01
    • 1970-01-01
    • 2013-01-16
    • 1970-01-01
    相关资源
    最近更新 更多