带有XML文字vb.net的InvalidOperationException

时间:2016-12-18 18:08:30

标签: xml wpf vb.net xml-parsing

我正在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()

我必须遗漏一些非常基本的东西。任何帮助将不胜感激。

2 个答案:

答案 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的解决方案更强大,可以处理命名空间的双重定义。