我怎样才能在VBA word宏中读取xml的子元素

时间:2014-11-28 08:41:34

标签: vba ms-word word-vba

我想知道如何在VBA(Word宏)中读取“changeHistory”节点的子节点

<?xml version="1.0"?>
<RequirementInfo> 
   <V_CUSTMER>abc</V_CUSTMER> 
   <changeHistory>
        <ver>
            <versionNo>1.0</versionNo>
            <vDate>12/11/2010</vDate>
            <desc>desc1</desc>
        </ver>
        <ver>
            <versionNo>2.0</versionNo>
            <vDate>12/11/2011</vDate>
            <desc>desc2</desc>
        </ver>
        <ver>
            <versionNo>3.0</versionNo>
            <vDate>12/11/2012</vDate>
            <desc>desc3</desc>
        </ver>
   </changeHistory>
</RequirementInfo>

我正在使用下面的代码来读取根节点,但我不知道如何进入子节点。

For Each curNode In xmlDoc.ChildNodes
    If curNode.NodeType = 1 Then  ' only look at type=NODE_ELEMENT
              For I = 1 To curNode.ChildNodes.Length
                nodeName = curNode.ChildNodes(I - 1).nodeName
                nodeText = curNode.ChildNodes(I - 1).Text
                Debug.Print nodeName
                If nodeName = "changeHistory" Then


                Else
                    ActiveDocument.FormFields(nodeName).Result = nodeText
                End If
            Next
       End If
Next

1 个答案:

答案 0 :(得分:1)

XPath是在XML文档中定位节点的工具。

selectSingleNode()selectNodes()是允许您使用XPath的DOM API函数。

例如:

Set ver = xmlDoc.selectSingleNode("//changeHistory/ver[versionNo = '1.0']")

For Each detail In ver.selectNodes("*")
    ActiveDocument.FormFields(detail.nodeName).Result = detail.text
Next detail