解析XML文件中的特定标记

时间:2014-03-27 20:24:09

标签: xml vb.net visual-studio-2012 xpath visual-studio-2013

我正在使用XPath尝试从我的XML文件中获取文件路径,但是带有文件路径信息的消息框永远不会弹出...

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>

VB.NET代码

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

消息框永远不会显示...我拥有所有必需的导入,我的代码编译并正确执行。

感谢任何帮助!

1 个答案:

答案 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)