解析名为Space的XML文件

时间:2017-05-19 19:35:18

标签: xml vb.net xpath

好的,这让我疯了,我有一个XML文件,它代表一个调用详细记录,它有一个布局,并注意它使用一个命名空间

<File>
  <FileHeader>
  </FileHeader>
  <CDRs>
     <Call>
     </Call>
     <Call>
     </Call>
  </Cdrs>
  <FileFooter>
  </FileFooter>
</File>

我加载文件没有问题,但是当我尝试

Dim thisNode As XmlNode = xmldoc.SelectSingleNode("meta:File/FileHeader", nsmgr)

我总是一无所获。但如果我使用

xmlnodes2 = xmldoc.GetElementsByTagName("FileHeader")

我可以像这样访问我的节点

xmlHeader = xmlnodes2(0)
Dim seqnum As String = ""
Dim EquipmentType As String = xmlHeader.SelectSingleNode("meta:EquipmentType", nsmgr).InnerText
Dim EquipmentId As String = xmlHeader.SelectSingleNode("meta:EquipmentId", nsmgr).InnerText
Dim CreateTime As String = xmlHeader.SelectSingleNode("meta:CreateTime", nsmgr).InnerText

Debug.WriteLine("---------------------Debug File Header----------------------")
Debug.WriteLine(seqnum & " - " & EquipmentType & " - " & EquipmentId & " - " & CreateTime)
Debug.WriteLine(xmlHeader.OuterXml)

以下是我的xml文件的开头是什么样的,所以我想知道我在这里缺少什么?

`<?xml version="1.0" encoding="UTF-8"?>
 <File xmlns="http://www.metaswitch.com/cfs/billing/V1.0" 
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" compatibility="2">
 <FileHeader seqnum="23997">
 <EquipmentType>Metaswitch CFS</EquipmentType>
 <EquipmentId></EquipmentId>
 <CreateTime>1491092100003</CreateTime>
 </FileHeader>
 <CDRs>.....`

1 个答案:

答案 0 :(得分:0)

我想问题是我不明白我需要在每个级别指定名称空间前缀,以便我必须使用

Dim thisNode As XmlNode = xmldoc.SelectSingleNode("meta:File/meta:FileHeader", nsmgr)