2016-12-18 31 views
0

我重新写在WPF一个WinForm桌面应用程序,一切都在WinForm的工作得很好,但我正在逐渐在WPF出现InvalidOperationException与XML文本vb.net

,是造成问题的应用程序的一部分抛出的异常正在读取一个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

试试这个

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 
+0

是的,这是有效的。非常感谢,至少我没有被卡住。我希望尽管能够使用XML文字,但它更加整洁,更容易跟踪 - 再加上我所有的WinForms代码已经使用文字。为什么XML文字不能用于WPF?我找不到在Stackoverflow或其他论坛/网站的任何参考。 VB.net IS的一大优势是()能够使用XML文字 - 在WPF中已经失去了它的优势吗?我使用的是Visual Studio 2015,以防万一 – andromeda2324

0

我刚刚经历的一切去用细齿梳试图让XML文本做他们的工作。我发现问题出在我使用的输入XML文件上。

由于某种原因,该文件在XML标题中有两个相同名称空间的条目。这导致了XML文字的异常,但是jdweng的解决方案更加健壮并且可以处理命名空间的双重定义。

相关问题