You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

VB.NET中使用LINQ to XML搜索val值并获取对应catalog及val属性的方法

问题分析

你的原有代码存在3个核心错误:

  1. c.Elements("val").Value 写法获取的是当前catalog下所有val节点的文本拼接结果,无法精准匹配单个val节点的文本
  2. 查询维度错误,应该以val节点为查询起点,而非catalog节点,这样才能直接拿到符合条件的val的index属性,再向上获取所属catalog的name属性
  3. 声明的返回类型IEnumerable(Of XElement)和实际Select返回的字符串类型不匹配,会触发类型错误
修正后的可运行代码
Dim xml_Doc = XDocument.Load(Path.Combine(myPath, "list.Xml"))
Dim targetKeyword As String = "sample text 1"

' 直接遍历所有val节点匹配关键词
Dim search_result = From v In xml_Doc.Descendants("val")
                    Where v.Value.Contains(targetKeyword)
                    Let parentCatalog = v.Parent ' 取当前val所属的catalog节点
                    Select $"index:{v.Attribute("index").Value} , name: {parentCatalog.Attribute("name").Value}"

' 输出结果
For Each line In search_result
    Console.WriteLine(line)
Next

运行后会直接输出你需要的格式:

index:1 , name: n1
index:4 , name: n2
补充说明
  • 用Path.Combine拼接文件路径比直接用&拼接更稳妥,可避免路径多斜杠/缺斜杠的异常
  • 如果需要区分大小写匹配,可在Contains方法里传入StringComparison参数调整匹配规则

内容的提问来源于stack exchange,提问作者ha a

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 11:24:03