XmlDocument.Load使用了错误的重载

XmlDocument.Load使用了错误的重载,第1张

概述从DLL我得到这个 XML字符串(而不是文件): <?xml version="1.0" encoding="UTF-8"?><SerRes RequestID="1" RequestType="GetStatus" OverallResult="ConnectionError"></SerRes> 我想要的是RequestID,OverallResult的值. dim ID as strin 从DLL我得到这个 XML字符串(而不是文件):

<?xml version="1.0" enCoding="UTF-8"?><SerRes RequestID="1" RequestType="GetStatus" OverallResult="ConnectionError"></SerRes>

我想要的是RequestID,OverallResult的值.

dim ID as string = ... (will be 1)dim Result as string = ...    (will be ConnectionError)

我试过这个,但是我收到的错误是某些字符不正确.

Dim Result as stringDim ID as stringDim sr As New System.IO.StringReader(XMLString)Dim doc As New Xml.Xmldocumentdoc.Load(sr)Dim reader As New Xml.XmlNodeReader(doc)While reader.Read()  Select Case reader.NodeType    Case Xml.XmlNodeType.Element    If reader.name = "SerRes" Then      Result = reader.GetAttribute("OverallResult")      ID = reader.GetAttribute("RequestID")    End If  End SelectEnd While

我在行doc.Load(sr)上收到以下错误

An unhandled exception of type ‘System.ArgumentException’ occurred in mscorlib.dll
Additional information: Illegal characters in path.

看起来VB出于某种原因选择.Load(String)而不是.Load(Stream).

有人能看到问题吗?

解决方法 发生的事情是,如果不使用 Option Strict On,编译器似乎选择了Xmldocument.Load方法的 wrong overload,以便它尝试读取文件.

启用Option Strict On以选择要从流中读取的correct overload.

(将Option Strict On作为新项目的默认值是一个好主意 – 在Can I set Option Explicit and Option Strict on a Project/Solution level?有更多相关信息)

顺便提一下,正如用户Slai在其他地方有用地指出的那样,VB.Net XML Axis Properties有一些漂亮的功能,您可以利用这些功能来减少代码量并提高可读性:

Dim X = XElement.Parse(XMLString)Dim ID$= X.@RequestIDDim Result$= X.@OverallResult

为了避免评论丢失的信息,用户TnTinMn通知我们早期的VS2015版本充满了奇怪的错误,因此,如果这是用于编译代码的东西,那么这可能就是它错误的原因.

总结

以上是内存溢出为你收集整理的XmlDocument.Load使用了错误的重载全部内容,希望文章能够帮你解决XmlDocument.Load使用了错误的重载所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1236010.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-06
下一篇 2022-06-06

发表评论

登录后才能评论

评论列表(0条)

保存