我正在使用XPath尝试从我的XML文件中获取文件路径,但是带有文件路径信息的消息框永远不会弹出...
<?xml version="1.0" standalone="yes"?>
<csvcData xmlns="http://tempuri.org/csvcData.xsd">
<fileLocations>
<ID>0</ID>
<filePath>\Check Quotes\report.xlsx</filePath>
</fileLocations>
<fileLocations>
<ID>1</ID>
<filePath>\Check Quotes\smartListReport.xlsx</filePath>
</fileLocations>
</csvcData>
Using File As New FileStream(_dataPath, FileMode.Open, FileAccess.Read)
Dim Doc As New XPathDocument(File)
Dim Nav = Doc.CreateNavigator
Dim fPath = Nav.Select("//csvcData/fileLocations/filePath")
While fPath.MoveNext
Dim msg = MsgBox("Filepath : " + fPath.Current.Value)
End While
End Using
消息框永远不会显示...我拥有所有必需的导入,我的代码编译并正确执行。
感谢任何帮助!
答案 0 :(得分:1)
问题是文档在根元素处定义了默认命名空间。这意味着,即使没有为任何节点显式声明命名空间,它们实际上都在该命名空间中。 .NET中的XPath没有默认命名空间的概念。因此,如果要使用XPath选择任何节点,则必须为每个节点显式声明名称空间,如下所示:
Dim manager As XmlNamespaceManager = New XmlNamespaceManager(Nav.NameTable)
manager.AddNamespace("d", "http://tempuri.org/csvcData.xsd")
Dim fPath = Nav.Select("//d:csvcData/d:fileLocations/d:filePath", manager)