【问题标题】:Accessing XML elements with LINQ using VB.net (not C#)使用 VB.net(不是 C#)通过 LINQ 访问 XML 元素
【发布时间】:2011-11-29 20:43:13
【问题描述】:

我正在尝试学习如何使用 VB.net 使用 LINQ 搜索 XML 树。我发现了一些对 C# 很有帮助的帖子,但对 VB.net 没有。

我想获取 name = "MyProcess1" 的进程的输入位置根据上面的示例链接,我一直在尝试这样的代码:

   Dim inputLocation As String = xdocument.Descendants("Configurations").Descendants("process").First(Function(c) c.Element("name").Value = "MyProcess1").Element("inputLocation").Value

但是代码没有返回任何值。这是xml

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Configurations>
 <process>
<name>MyProcess1</name>
<inputLocation> inputPath
</inputLocation>
<outputLocation> outputPath1
</outputLocation>
  </process>
  <process>
<name>MyProcess2</name>
<inputLocation> inputPath2
</inputLocation>
<outputLocation>outputPath2
</outputLocation>
  </process>
</Configurations>

【问题讨论】:

  • 试试这个:Dim inputLocation As String = xdocument.Descendants("Configurations").Descendants("process").First(Function(c) c.Element("name").Value.Equals ("MyProcess1")).Element("inputLocation").Value.Trim()
  • 它有效。感谢您的帮助
  • 太棒了:)。我已将其添加为答案。

标签: .net xml vb.net linq


【解决方案1】:

试试这个:

Dim inputLocation As String = xdocument.Descendants("Configurations").Descendants("process").First(Function(c) c.Element("name").Value.Equals("MyProcess1")).Element("inputLocation").Value.Tri‌​m();

它基本上只是从返回值的末尾修剪 \n 字符:)。我插入了 Equals() 而不是 = 以防万一,但两者都应该工作:)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-31
    • 1970-01-01
    • 2015-02-23
    • 2020-09-23
    • 2014-09-19
    • 1970-01-01
    相关资源
    最近更新 更多