VB Net 中的 XML 解析

标签 xml vb.net xml-parsing

我正在尝试使用 VB.NET 从 <itemnote> 中提取内部文本基于 name <series> 的属性和 name它的子元素的属性 <item> .我可以提取名称属性,但我无法访问 <itemnote> 的内部文本

这是一些示例 XML:

<?xml version="1.0" encoding="UTF-8"?>
<Products>
  <series name="HiTech" year="2000" country="United Kingdom">
    <item name="Robotic" collected="no">
    <itemnote>Exclusive UK Release</itemnote>
    </item>
     <item name="Future" collected="yes">
    <itemnote>LED Edition</itemnote>
    </item>
  </series>
  <series name="Neo" year="2003" country="United Kingdom">
    <item name="X Rated" collected="no">
    <itemnote>Red striped version</itemnote>
    </item>
     <item name="Cool Breeze" collected="no">
    <itemnote>Includes promo booklet</itemnote>
    </item>
  </series>
</Products>

到目前为止,我已尝试对 XDocument 使用递归循环,但除了所有 <series> 的列表之外,我什么都得不到。和 <item>属性。我也尝试过使用 XPath 和 Linq,但我无法弄清楚如何让其中任何一个按照我的意愿进行。任何帮助都会很棒!干杯。

最佳答案

您需要获取 <item> 的引用节点并基于 item元素,您可以比较 parent 的名称属性值和 child元素。

Dim nameOfSeries = "HiTech"
Dim nameOfItem = "Future"

Dim result = doc.Descendants("item").Where(Function(p)
                               Return p.Parent.Attribute("name").Value = nameOfSeries And 
                                                p.Attribute("name").Value = nameOfItem
                               End Function)

IF result.Count Then
  For Each ele In result
    Console.WriteLine(ele.Element("itemnote").Value)
  Next
End If

关于VB Net 中的 XML 解析,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14034745/

相关文章:

mysql - xml 与数据库

xml - DTD和CDATA的理解

vb.net - 在 VB.NET 中只从文件中读取 x 个字节

vb.net - If 1 = 2 = 3 Then (...) 如何工作

java - 关于 REST 响应和 XMLElement

xml - 与将 <complexType> 从一个 XSD 扩展到另一个 XSD 相关的查询

java - 如何在 Java 中转义 XML 中的非标准字符?

java - 选择图像后, ImageView 不显示圆形

vb.net - 在 VB.Net 中,如何以毫秒(长)为单位获取当前时间?

unit-testing - 模拟 Faraday::Response 对象的 `body` 和 Nokogiri::XML::NodeSet