我正在尝试解析具体的"字段"在下面的XML示例中使用VBA。例如,我想专门解析来自" Field1"的值。并将其扔入变量。我有各种各样的麻烦。
这里有一些示例代码:
Sub test()
Set oXML = New MSXML2.DOMDocument
oXML.async = False
oXML.validateOnParse = False
oXML.Load ("C:\sample.xml")
Set oXmlNodes = oXML.selectNodes("/")
For Each oXmlNode In oXmlNodes
Debug.Print oXmlNode.Text
Next
End Sub
这就是XML:
<?xml version="1.0" encoding="UTF-8" ?>
<form>
<metadata>
<prop name="formName">
<value>myTestForm</value>
</prop>
<prop name="formIdentifier">
<value>0000033</value>
</prop>
</metadata>
<field name="field1" type="String">
<value>something</value>
</field>
<field name="field2" type="String">
<value>something else</value>
</field>
</form>
答案 0 :(得分:2)
您的示例XML格式不正确:您的“prop”结束标记没有匹配的开始标记:
<form>
<metadata>
<value>myTestForm</value>
</prop>
<prop name="formIdentifier">
<value>0000033</value>
</prop>
</metadata>
尝试添加prop标签,例如:
<form>
<metadata>
<prop name="formName">
<value>myTestForm</value>
</prop>
<prop name="formIdentifier">
<value>0000033</value>
</prop>
</metadata>
在您的代码中,您应该检查解析错误:
oXML.Load ("C:\sample.xml")
if (oXML.parseError.errorCode != 0) ...
<强>更新强>
在我的帖子中进行了更正,但显然仍然不知道如何解析具体的值。
您正在使用选择根节点的XPATH表达式“/”。您需要更改此选项以选择所需的节点。目前还不清楚你想要什么,但你可以先尝试选择所有“场”节点。
Set oXmlNodes = oXML.selectNodes("//field")
或更具体的内容,例如以下将选择作为根表单节点的子节点并具有属性name ='field1'的字段节点:
Set oXmlNodes = oXML.selectNodes("/form/field[@name='field1']")
如果这没有帮助,请发布有关您想要的更多信息,或者查看XPATH教程。