gpt4 book ai didi

xml - 使用 LINQ 对属性进行 VB XML 查询

转载 作者:数据小太阳 更新时间:2023-10-29 02:21:35 26 4
gpt4 key购买 nike

我正在尝试学习 LINQ,但有一个关于使用 VB 查询 XML 的问题。

我的 XML:

 <Procedure-Text>
<A ID="marker1"></A>Do This Procedure
</Procedure-Text>
<Procedure-Text>
<A ID="marker2"></A>Do That Procedure
</Procedure-Text>

如何指定我的查询以仅获取具有 ID 属性 ma​​rker2 的过程文本?换句话说,我想要一个显示 Do That Procedure 的结果字符串。

谢谢

最佳答案

使用 VB XML 文字:

Dim marker2 = From x In data...<Procedure-Text> _
Where x.<A>.@ID = "marker2" _
Select x

三点语法生成 xml 元素的“所有后代”,即 data...<Procedure-Test>将生成 <Procedure-Test> 的列表里面的标签 data

XML 文字上的点语法表示“第一个后代”,所以 x.<A>将产生第一次出现的 <A>在 x 内。其中 x 现在是 <Procedure-Test> 的实例

现在您已经有了所需的 <A>元素,将其 id 与字符串进行比较对于 @attr 来说是微不足道的属性选择器。 <A>.@ID = "marker2"将评估为 True如果 <A> 的 ID 属性标签等于“marker2”

所以 x.<A>.@ID表示“x 内第一个 <A> 标签的 ID 属性”

而你想要 <Procedure-Text>元素,所以你指定 Select x

完整示例:

Sub Main()

Dim data = <doc>
<Procedure-Text>
<A ID="marker1"></A>Do This Procedure
</Procedure-Text>
<Procedure-Text>
<A ID="marker2"></A>Do That Procedure
</Procedure-Text>
</doc>

Dim marker2 = From x In data...<Procedure-Text> _
Where x.<A>.@ID = "marker2" _
Select x

' prints the second procedure-text element
Console.WriteLine(marker2.FirstOrDefault().ToString())

Console.ReadKey()

End Sub

关于xml - 使用 LINQ 对属性进行 VB XML 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/595597/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com