2016-11-17 245 views
0
Dim xmldoc As New XmlDocument() 
Dim xmlnode As XmlNodeList 
Dim i As Integer 
Dim str As String 

xmldoc.LoadXml("countyByRegion.xml") 

這將引發從嵌入式資源中讀取XML文件的最佳方式是什麼?

型「System.Xml.XmlException」的異常出現在system.xml.dll的,但在用戶代碼中沒有處理。其他信息:根級別的數據無效。 1號線,位置1

回答

0

我通常會做這個

Dim fsXML As New FileStream("countyByRegion.xml", FileMode.Open, FileAccess.Read) 

然後用xmldoc.Load(fsXML)

+0

我有嵌入式資源中的xml文件。我正在處理的應用程序是一個擴展,我沒有確切的文件路徑,我試過上面的代碼,它給了我「mscorlib.dll中發生類型'System.IO.FileNotFoundException'的異常,但沒有處理用戶代碼 附加信息:找不到文件'C:\ Program Files(x86)\ TriZetto \ Facets \ System \ Config \ countyByRegion.xml'。「 – Gautam

+0

如果它是一個嵌入式資源,你不應該需要完整的路徑(我在這裏丟失了一些簡單的東西嗎?) – Leprechaun

+0

我很抱歉,我對vb真的很陌生,我使用相同的代碼,正如你所建議的,正如你所說的嵌入式資源它不應該在其他位置查找文件。我現在正在研究如何從嵌入式資源中讀取文件,但直到現在運行很少。 – Gautam

1

LoadXml不用於加載文件,它是用於加載XML作爲一個字符串。所以它期望你做類似LoadXml("<root><bar>hi</bar></root>");顯然,文件名不是有效的XML。

您可以使用Load加載文件。您可以像現在使用LoadXml一樣使用它,只需指定文件的路徑即可。

+0

謝謝,我明白了你的觀點。 – Gautam

0
Dim fileText As String 
    Dim a As Assembly = GetType(ZP957_Form).Assembly 
    Using reader As New StreamReader(a.GetManifestResourceStream("ZP957.countyByRegion.xml")) 
     fileText = reader.ReadToEnd() 
    End Using 

    xmldoc.LoadXml(fileText) 

由於XML嵌入,不得不從大會,我不得不使用GetManifestResourceStream閱讀它,然後我們可以做的loadXML因爲我們現在有XML格式的文件流。這對我有效。

相關問題