从VBA解析XML不起作用
我正在尝试使用ExcelVBA解析xml文件。以下是我的xml文件的外观:从VBA解析XML不起作用,xml,vba,excel,Xml,Vba,Excel,我正在尝试使用ExcelVBA解析xml文件。以下是我的xml文件的外观: <?xml version="1.0" encoding="UTF-8" standalone="no"?> <Environment> <Variable> <Name></Name> <Caption>T1</Caption> <Type>TEXT</Type&
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<Environment>
<Variable>
<Name></Name>
<Caption>T1</Caption>
<Type>TEXT</Type>
<Value>V1</Value>
<Description></Description>
</Variable>
<Variable>
<Name></Name>
<Caption>T2</Caption>
<Type>TEXT</Type>
<Value>V2</Value>
<Description></Description>
</Variable>
<Variable>
<Name></Name>
<Caption>T3</Caption>
<Type>TEXT</Type>
<Value>V3</Value>
<Description></Description>
</Variable> <Variable>
<Name></Name>
<Caption>T4</Caption>
<Type>TEXT</Type>
<Value>V4</Value>
<Description></Description>
</Variable> <Variable>
<Name></Name>
<Caption>T5</Caption>
<Type>TEXT</Type>
<Value>V5</Value>
<Description></Description>
</Variable>
</Variable> <Variable>
<Name></Name>
<Caption>T6</Caption>
<Type>TEXT</Type>
<Value>V6</Value>
<Description></Description>
</Variable>
</Environment>
但我无法成功地运行此程序。我使用的是Excel 2013,并参考了Microsoft XML 6.0。但在执行过程中什么也没有发生。我试图用on error语句捕捉错误,但它返回错误号0。谁能告诉我这里做错了什么。只有在XML格式正确的情况下,XML解析器才能工作。否则,
oXMLDOMDocument.load
方法将失败
要检查这一点,您可以像这样使用oXMLDOMDocument.parseError
:
Public Function ll()
Dim oDoc As Object
Set oDoc = CreateObject("MSXML2.DOMDocument")
oDoc.Load "E:\web\cc.xml"
Dim oErr As Object
If oDoc.parseError.ErrorCode <> 0 Then
Set oErr = oDoc.parseError
Debug.Print oErr.reason
End If
Dim oVariables As Object
Dim oVariable As Object
Set oVariables = oDoc.SelectNodes("/Environment/Variable")
For Each oVariable In oVariables
Debug.Print oVariable.SelectNodes("Caption").Item(0).Text
Debug.Print oVariable.SelectNodes("Type").Item(0).Text
Next
End Function
公共函数ll()
作为对象的Dim-oDoc
设置oDoc=CreateObject(“MSXML2.DOMDocument”)
加载“E:\web\cc.xml”
作为对象的模糊oErr
如果oDoc.parseError.ErrorCode为0,则
设置oErr=oDoc.parseError
调试。打印oErr.reason
如果结束
作为对象的对象
可作为对象的
Set ovisiables=oDoc.SelectNodes(“/Environment/Variable”)
对于卵巢中的每个卵巢
调试。打印可编辑。选择节点(“标题”)。项(0)。文本
调试。打印可编辑。选择节点(“类型”)。项(0)。文本
下一个
端函数
请参阅:只有在XML格式正确的情况下,XML解析器才能工作。否则,
oXMLDOMDocument.load
方法将失败
要检查这一点,您可以像这样使用oXMLDOMDocument.parseError
:
Public Function ll()
Dim oDoc As Object
Set oDoc = CreateObject("MSXML2.DOMDocument")
oDoc.Load "E:\web\cc.xml"
Dim oErr As Object
If oDoc.parseError.ErrorCode <> 0 Then
Set oErr = oDoc.parseError
Debug.Print oErr.reason
End If
Dim oVariables As Object
Dim oVariable As Object
Set oVariables = oDoc.SelectNodes("/Environment/Variable")
For Each oVariable In oVariables
Debug.Print oVariable.SelectNodes("Caption").Item(0).Text
Debug.Print oVariable.SelectNodes("Type").Item(0).Text
Next
End Function
公共函数ll()
作为对象的Dim-oDoc
设置oDoc=CreateObject(“MSXML2.DOMDocument”)
加载“E:\web\cc.xml”
作为对象的模糊oErr
如果oDoc.parseError.ErrorCode为0,则
设置oErr=oDoc.parseError
调试。打印oErr.reason
如果结束
作为对象的对象
可作为对象的
Set ovisiables=oDoc.SelectNodes(“/Environment/Variable”)
对于卵巢中的每个卵巢
调试。打印可编辑。选择节点(“标题”)。项(0)。文本
调试。打印可编辑。选择节点(“类型”)。项(0)。文本
下一个
端函数
请参阅:XML格式不正确。在最后一个
变量元素之前有一个
到。同意@AxelRichter。VTC感谢您的快速回复!调查此类情况的一个好方法是单步执行代码(VBA编辑器中的F8)。然后,您可以与即时窗口中的对象进行交互(例如,debug.print Variables.Count
将告诉您返回了多少节点SelectNodes
),并查看发生了什么。XML格式不正确。在最后一个变量元素之前有一个
到。同意@AxelRichter。VTC感谢您的快速回复!调查此类情况的一个好方法是单步执行代码(VBA编辑器中的F8)。然后,您可以与即时窗口中的对象进行交互(例如,debug.print Variables.Count
将告诉您返回了多少节点SelectNodes
),并查看发生了什么。XML格式不正确。在最后一个变量元素之前有一个
到。同意@AxelRichter。VTC感谢您的快速回复!调查此类情况的一个好方法是单步执行代码(VBA编辑器中的F8)。然后,您可以与即时窗口中的对象进行交互(例如,debug.print Variables.Count
将告诉您返回了多少节点SelectNodes
),并查看发生了什么。