2014年4月30日 星期三

[VB.NET][XML]使用XPATH查詢含有前置詞的XML

使用.NET的XmlDocument類別要處理XML檔非常方便,但是遇到有XmlNamespace的XML要怎麼處理?
一般會有常見的像是Soap描述檔,節點前面都有前置詞,例如:xsd:節點名稱
Test.xml
 
 

  
    
      
        A
        
          
            A1
            A2
          
        
      
      
        B
        
          B1
          B2
          B3
        
      
    
  

VB.NET
    Sub Main()
        Dim oXml As New XmlDocument
        Dim nsmgr As XmlNamespaceManager = New XmlNamespaceManager(oXml.NameTable)
        oXml.Load("Test.xml")
        '這裡要對應XML內容的真正使用的Namespace如:xmlns:xsd="http://www.w3.org/2001/XMLSchema"
        nsmgr.AddNamespace("xsd", "http://www.w3.org/2001/XMLSchema")
        '回傳單一節點
        Console.WriteLine(oXml.SelectSingleNode("//xsd:anyType[1]", nsmgr).InnerText)
        '回傳多個節點
        For Each Note As XmlNode In oXml.SelectNodes("//xsd:anyType", nsmgr)
            Console.WriteLine(Note.InnerText)
        Next
        Console.ReadKey()
    End Sub