我試圖讀取XML文件的版本讀取版本元素值:如何從一個XML文件
<Order xsi:schemaLocation="urn:schemas-basda-org:2000:purchaseOrder:xdr:3.01 order-v3.xsd urn:schemas-bossfed-co-uk:OP-Order-v1 OP-Order-v1.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="urn:schemas-basda-org:2000:purchaseOrder:xdr:3.01">
<OrderHead>
<Schema>
<Version>3.05</Version>
</Schema>
<Parameters>
<Language>en-GB</Language>
<DecimalSeparator>.</DecimalSeparator>
<Precision>12.1</Precision>
</Parameters>
<OrderCurrency>
<Currency Code="GBP">GB Pounds</Currency>
</OrderCurrency>
</OrderHead>
我試圖使用的代碼是:
Dim m_xmld As XmlDocument
Dim m_nodelist As XmlNodeList
Dim m_node As XmlNode
'Create the XML Document
m_xmld = New XmlDocument()
'Load the Xml file
m_xmld.Load(fileLocation)
'Show all data in your xml
MessageBox.Show(m_xmld.OuterXml)
'Get the list of name nodes
m_nodelist = m_xmld.SelectNodes("/Order/OrderHead/Schema")
For Each m_node In m_nodelist
GetXmlVersion = m_node.Attributes.GetNamedItem("Version").Value
Next
但是,它有任何東西拉。
我改成了:
Public Shared Function GetXmlVersion (ByVal fileLocation As String) As String
Dim m_xmld As XmlDocument = New XmlDocument()
m_xmld.Load (fileLocation)
GetXmlVersion = m_xmld.SelectSingleNode ("/Order/OrderHead/Schema/Version").InnerText
End Function
,我只是得到
的NullReferenceException是不設置到對象的實例未處理 對象引用。
因爲m_xmld.selectsinglenode爲空
您沒有顯示出重現問題的XML的完整工作示例。當我測試它時,它工作正常,但爲了讓它起作用,我必須添加結束標籤並取出'xsi:schemaLocation'屬性,因爲該名稱空間未定義。特別是,你需要顯示默認的命名空間,如果有的話。如果定義了默認名稱空間,那肯定會停止您的代碼的工作。 – 2012-07-06 17:22:57
我已經更新了XML,我沒有意識到schemaLocation影響了讀取xml節點。謝謝 – Houlahan 2012-07-06 17:34:46
有無論如何,我可以閱讀這個XML而忽略模式?作爲我將與這個文件做的工作doesent需要訪問他們再次感謝 – Houlahan 2012-07-06 17:50:44