从DLL我得到这个 XML字符串(而不是文件): ?xml version="1.0" encoding="UTF-8"?SerRes RequestID="1" RequestType="GetStatus" OverallResult="ConnectionError"/SerRes 我想要的是RequestID,OverallResult的值. dim ID as string =
<?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 string Dim ID as string Dim sr As New System.IO.StringReader(XMLString) Dim doc As New Xml.XmlDocument doc.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 Select End 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.@RequestID Dim Result$= X.@OverallResult
为了避免评论丢失的信息,用户TnTinMn通知我们早期的VS2015版本充满了奇怪的错误,因此,如果这是用于编译代码的东西,那么这可能就是它错误的原因.