【发布时间】:2020-04-03 13:23:06
【问题描述】:
我的 XML 文件看起来类似于这种格式:
<?xml version="1.0" encoding="utf-8"?>
<Document>
<Fruits>
<Attr N="Orange" V="23.0" />
<Attr N="Apple" V="10" />
<Attr N="Pear" V="0.000000" />
</Fruits>
<Customer>
<Attr N="Package" V="Box" />
<Attr N="Cashier" V="P26" />
<Attr N="Type" V="2" />
<Attr N="Policy" V="25C" />
</Customer>
<OrderInfo>
<Attr N="PartNumber" V="CP231" />
<Attr N="Qty" V="2" />
<Attr N="Salesman" V="Joe" />
</OrderInfo>
<OrderInfo>
<Attr N="PartNumber" V="CD131" />
<Attr N="Qty" V="3" />
<Attr N="Salesman" V="Joe" />
</OrderInfo>
</Document>
我正在尝试从 OrderInfo 中提取 N 和 V 的 PartNumber 和 Qty,但由于某种原因我的代码无法正常工作,这是我的代码,如果我能得到任何帮助,将不胜感激。
Dim xmlSource As New XmlTextReader("Test.xml")
Dim xml = XDocument.Load(xmlSource)
Dim trs = xml.Root.Descendants("OrderInfo").ToList()
For Each CalculatedPrice In trs
Dim tds = CalculatedPrice.Descendants("Attr")
For Each Attr As XElement In tds
Dim atr As XAttribute = Attr.Attribute("N")
If Not (atr.Value = Nothing) Then
Console.WriteLine(String.Format("{0}", atr.Value))
End If
Next
Next
【问题讨论】:
-
你能澄清一下“我的代码永远不会工作”的意思吗?我刚刚运行了您的确切代码,它打印出“PartNumber Qty Salesman PartNumber Qty Salesman”
-
您应该添加您得到的输出或您遇到的任何错误消息。这将有助于其他贡献者快速找到问题。
-
欢迎来到 SO。只是一个想法,但 XML 看起来有点不常见,元素名为“属性”,属性名为“名称”和“值”(N 和 V)。属性本身就是 name='value'。
-
我建议使用 XmlDocument 和 SelectNodes,最后在结果上调用 GetAttribute()。
-
@William Walseth:这是一个糟糕的建议。 xml linq 在解析这个 xml 方面要好得多。