【问题标题】:How to Enumerate variable XML Document in .NET using Linq to XML如何使用 Linq to XML 在 .NET 中枚举变量 XML 文档
【发布时间】:2009-12-13 07:11:59
【问题描述】:

我正在向 ssh 会话提交一个命令并返回一个 XML 响应,该响应是可变的,具体取决于我正在运行的查询类型。我得到以下类型的 XML 返回...

<CLIOutput>
  <Results>
    <ReturnCode>0</ReturnCode>
    <EventCode>23000</EventCode>
   <EventSummary>CLI command completed successfully.</EventSummary>
  </Results>
  <Data>
    <Row>
      <Client>kcllaptop</Client>
      <Domain>/Top/Top</Domain>
    </Row>
    <Row>
      <Client>testclient</Client>
      <Domain>/Top/Top</Domain>
    </Row>
  </Data>
</CLIOutput>

然后我解析成一个 XDocument,我想做的是枚举 部分中的不同 属性,假设它们发生了变化。它们总是在 DATA 部分,但它们的属性名称和编号会发生变化。我可以在上面的例子中得到具体的,但我追求的是更通用的方法。

我可以通过

_xDoc.Elements().<Data>.<Rows>(0).<Client>.ToValue

名称会更改。

枚举元素中返回的行的最佳方法是什么。

完成 LInq 新手对不起。

感谢和干杯,艾尔

【问题讨论】:

  • 抱歉,澄清一下 - 属性的名称发生了变化,我无法让序数计数起作用。

标签: .net linq-to-xml


【解决方案1】:

SLaks 的回答很有效。但是,在 VB.NET 中,您不需要 .Elements() 方法。

这将做同样的事情:

For Each row in _xDoc.<Data>.<Row>
    Console.WriteLine(row.<Client>.Value)
Next 

【讨论】:

  • 对不起 - 我的意思是,下一次可能不是 ,它可能是 <Domain>。我最终得到了我想在 C# 中工作的东西,然后将其转换为 VB.Net——不是 VB.Net 开发人员,而是必须将某些东西集成到现有库中。
  • 好的,如果需要,我可以帮助使用 VB.NET 语法。
【解决方案2】:

我假设您使用的是 VB.Net。

你可以循环Elements方法的返回值,像这样:

For Each client As XElement In _xDoc.Elements().<Data>.<Row>
    'Do something
Next

【讨论】:

  • 应该是 . 结尾而不是 .
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-03-23
相关资源
最近更新 更多