我正在WPF中重写一个WinForm桌面应用程序,WinForm中的一切正常,但我在WPF中抛出一个异常
导致问题的应用程序部分是读取XML文件并在文本框中显示数据,非常基本的东西。
XML:
<?xml version="1.0" encoding="utf-8" standalone="no"?> <xml xmlns="http://www.w3.org/2000/svg" > <CORE> <HEADER> <name>aaabbbccc</name> <region>Region25</region> </HEADER> </CORE> </xml>
VB.net:
Public Class MainWindow Public filesvg As XDocument Private Sub ReadHeader() filesvg = XDocument.Load(LogFileName) Dim mynode = filesvg...<HEADER>.First() tbName.Text = mynode...<name>.Value tbRegion.Text = mynode...<region>.Value End Sub End Class
运行时,正确加载XML文件,但是尝试创建mynode时会抛出异常。
正如我所说 - 所有在WinForms中工作得很好,这也是一个.net 4.6应用程序,完全相同的代码。我在整个代码中广泛使用XML文字,所以我必须在WPF中再次使用它
我已经尝试过的事情:
使其更具文字性:Dim mynode = filesvg.<CORE>.<HEADER>.First()
使用FirstOrDefault:Dim mynode = filesvg.<CORE>.<HEADER>.FirstOrDefault()
我必须遗漏一些非常基本的东西。任何帮助将不胜感激。
答案 0 :(得分:0)
试试这个
Imports System.Xml
Imports System.Xml.Linq
Module Module1
Const FILENAME As String = "c:\temp\test.xml"
Sub Main()
Dim doc As XDocument = XDocument.Load(FILENAME)
Dim name As String = doc.Descendants().Where(Function(x) x.Name.LocalName = "name").FirstOrDefault()
Dim region As String = doc.Descendants().Where(Function(x) x.Name.LocalName = "region").FirstOrDefault()
End Sub
End Module
答案 1 :(得分:0)
我只是通过一个精细的齿形梳子试图让XML文字完成它们的工作。我发现问题出在我使用的输入XML文件上。
由于某种原因,该文件在XML的标头中有两个相同名称空间的条目。这导致XML文字异常,但jdweng的解决方案更强大,可以处理命名空间的双重定义。