【问题标题】:Passing to curly brackets with value to XContainer.Descendants() does what?将带有值的大括号传递给 XContainer.Descendants() 做什么?
【发布时间】:2017-09-11 16:15:16
【问题描述】:

我没有看到在以下情况下使用大括号的解释: https://msdn.microsoft.com/en-us/library/bb353813(v=vs.110).aspx

我在考试中注意到: feed.Descendants("{urn:CFI}Flight").Concat(feed.Descendants(Flight));

它所指的xml是:

<AirlineFeed>
 <Flight xmlns:"urn:cfi" name:"AS515">
  <Seats>123</Seats>
 </Flight>

 <Flightname:"UN24">
  <Seats>96</Seats>
 </Flight>
</AirLineFeed>

大括号有什么作用?谢谢。

【问题讨论】:

    标签: c# xml xml-parsing linux-containers


    【解决方案1】:

    从您链接的页面:https://msdn.microsoft.com/en-us/library/bb353813(v=vs.110).aspx

    方法XContainer.Descendants() 采用System.Xml.Linq.XName 类型的参数XName

    如果您查看 System.Xml.Linq.XName 的 msdn 页面:https://msdn.microsoft.com/en-us/library/system.xml.linq.xname(v=vs.110).aspx

    备注可以看出:

    XML 名称包括名称空间和本地名称。完全限定名称 是命名空间和本地名称的组合。

    以及来自使用扩展名称

    您还可以使用 {namespace}localname

    形式的扩展 XML 名称创建 XName

    【讨论】:

    • 所以从代码中,我是否有效地请求所有具有值为“urn:cfi”的 xmlns 的 Flight 元素?
    • 在您的示例中由xmlns 定义的命名空间是urn:cfi。您可以从XContainer.Descendants() 文档中看到该方法返回一个IEnumerable,其中包含连接两个序列的concat() 方法,请参阅:https://msdn.microsoft.com/en-us/library/9eekhta0(v=vs.110).aspx。由于这是一道考试题,我试图避免简单地提供函数调用的输出,以便您自己获得答案。
    • 这就是第一个电话正在做的事情,你是对的。
    • 感谢 Nelson,我不确定它是否实际上只是放在引号中,或者在功能上使用它,但是在 VS 中运行代码时,如果我在大括号中放入一个 xmlns不存在控制台什么都不写(使用链接中的示例),所以它正在寻找我要求的内容。
    猜你喜欢
    • 2012-01-10
    • 2012-08-26
    • 2022-10-14
    • 1970-01-01
    • 2015-07-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-02
    相关资源
    最近更新 更多