【发布时间】:2014-09-25 11:30:40
【问题描述】:
我有以下代码可用作下拉选择事件,
'calling ersal webservice for banks
Dim service As New IMPALA.IMPALA
Dim bank As String
bank = service.Remittance_Bank(username, password, pin, code, txtbenfadd.Text)
'MsgBox(bank)
'formating the xml responce
Dim formater As StringBuilder
formater = New StringBuilder()
formater.Append("<?xml version=""1.0"" encoding=""UTF-8""?><root>")
formater.Append(bank)
formater.Append(""" /></root>")
'MsgBox(formater.ToString)
Dim xmlDoc = XElement.Parse(formater.ToString)
Dim root As IEnumerable(Of XElement) = xmlDoc.Elements()
Dim names As StringBuilder
Dim names1 As StringBuilder
names = New StringBuilder
names1 = New StringBuilder
For Each row In root
Dim attr As XAttribute
Dim attr2 As XAttribute
For Each attr In root.Attributes("BANK_CODE").AsEnumerable
names.Append(attr.Value + "|")
Next
For Each attr2 In root.Attributes("BANK_NAME").AsEnumerable
names1.Append(attr2.Value + "|")
Next
Next
Dim strArr() As String
Dim strArr1() As String
strArr = names.ToString.Split("|")
strArr1 = names1.ToString.Split("|")
Dim itemsList As ArrayList
itemsList = New ArrayList()
itemsList.Add(strArr)
itemsList.Add(strArr1)
'MsgBox(names.ToString)
For count = 0 To strArr1.Length - 1
ddlbank.Items.Add(strArr1(count))
ddlbnkcode.Items.Add(strArr(count))
Next
我刚刚发现了一个错误,这取决于来自 Web 服务的 XML 响应类型。下面是一个示例响应
<row BANK_CODE="111" BANK_NAME="KENYAN BANK"/>
<row BANK_CODE="121" BANK_NAME="EAST BANK"/>
<row BANK_CODE="185" BANK_NAME="NAKUMATT BANK"/>
<row BANK_CODE="125" BANK_NAME="KENYAN CONSUMER BANK"/>
<row BANK_CODE="174
当响应如上时,代码有效 因为我已经将它附加到格式化程序但是当响应很好地关闭时,如下所示
<row BANK_CODE="111" BANK_NAME="KENYAN BANK"/>
<row BANK_CODE="121" BANK_NAME="EAST BANK"/>
<row BANK_CODE="185" BANK_NAME="NAKUMATT BANK"/>
<row BANK_CODE="125" BANK_NAME="KENYAN CONSUMER BANK"/>
<row BANK_CODE="174" BANK_NAME="TUSKYS BUYERS BANK">
我收到以下错误:
名称不能以
'"'字符开头,十六进制值 0x22。第 1 行,位置 2078。说明:在执行当前 Web 请求期间发生未处理的异常。请查看堆栈跟踪以获取有关错误及其源自代码的位置的更多信息。
异常详细信息:
System.Xml.XmlException:名称不能以'"'字符开头,十六进制值 0x22。第 1 行,位置 2078。来源错误:
第 83 行:formater.Append(""" />") 第 84 行:'MsgBox(formater.ToString) 第 85 行:Dim xmlDoc = XElement.Parse(formater.ToString) 第 86 行:Dim root As IEnumerable(Of XElement) = xmlDoc.Elements() 第 87 行:Dim 名称为 StringBuilder
请在我可以附加结束部分或捕获异常并继续之前检查 XML 响应的任何帮助。
【问题讨论】:
-
所以你有一个函数
Remittance_Bank,它返回一个无效的XML,在中间被裁剪,然后你通过添加缺少的双引号并关闭标签来完成这个XML。当函数返回有效的完整 XML 时,您的代码将失败。这应该反过来,您应该在不完整的 XML 上失败,删除添加双引号的代码,并修复Remittance_Bank以始终返回有效的 XML。