Dim root As XElement = XElement.Load(xmlFile)
Dim stuff =
From item In root.Elements("abc") Select item
Debug.Print(stuff.Count)
,XML的内容是:
<?xml version="1.0"?>
<?mso-application progid="Excel.Sheet"?>
<Workbook
xmlns="urn:schemas-microsoft-com:office:spreadsheet"
xmlns:o="urn:schemas-microsoft-com:office:office"
xmlns:x="urn:schemas-microsoft-com:office:excel"
xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet"
xmlns:html="http://www.w3.org/TR/REC-html40">
<abc xmlns="foo">1</abc>
<abc xmlns="foo">2</abc>
<abc xmlns="foo">3</abc>
</Workbook>
如果我删除 xmlns =“urn:schemas-microsoft-com:office:spreadsheet” 工作簿标记的开头,我会得到正确的结果 3
ETA 如果我嵌入了另一个命名空间,我该怎么办?在这种情况下,“foo”
答案 0 :(得分:2)
您正在尝试查找名称为abc
但没有任何名称空间的元素。父元素的xmlns=...
部分设置后代元素的默认命名空间。
你需要:
Dim ns As XNamespace = "urn:schemas-microsoft-com:office:spreadsheet"
...
Dim stuff = root.Elements(ns + "abc")
请注意,在此处使用查询表达式毫无意义 - 如果您只是From x in y Select x
,则可以使用y
代替......