我正在更新代码以使用MSXML3.0中的MSXML6.0.但是,我注意到,对于MSXML3.0,默认的"SelectionLanguage"是"XSL Pattern",而MSXML6.0只支持XPath.我担心此更改会在查询语法中引入差异.
有人可以列出这两种语法之间的语法差异吗?
我有一个XML文件,其结构类似于:
<egh_eval>
<eval_set>
<eval_id>FLOAT</eval_id>
<eval_d>
<height>INT</height>
<weight>INT</weight>
</eval_d>
<eval_e>
<height>INT</height>
<weight>INT</weight>
</eval_e>
<eval_cred>
<credit>FLOAT</credit>
</eval_cred>
</eval_set>
Run Code Online (Sandbox Code Playgroud)
我需要解析完整的文件并将其放在表格中.(注意:eval_d和eval_e实际上每个都有超过一百个属性).我尝试使用MSXML2,但是当我尝试解析文件时,我遇到了问题.通过使用在回答如何在VBA填写Flash XML和VBA中解析XML我能到那里:
Dim fSuccess As Boolean
Dim oDoc As MSXML2.DOMDocument
Dim oRoot As MSXML2.IXMLDOMNode ' Level 0 egh_eval
Dim oChild As MSXML2.IXMLDOMNode ' Level 1 eval_set
Dim oChildren As MSXML2.IXMLDOMNode ' Level 2 eval_id, eval_d, eval_e, eval_cred
Dim domList As MSXML2.IXMLDOMNodeList
Set oDoc = New MSXML2.DOMDocument
oDoc.async = False
oDoc.validateOnParse = False
fSuccess = oDoc.Load(Application.CurrentProject.Path & "\file.xml")
Set oRoot = …Run Code Online (Sandbox Code Playgroud) 我需要使用 VBA 从 XML 中获取不同的属性名称。
这是我的代码。
sub test()
Dim XMLFile As Object
Dim XMLFileName As String
Set XMLFile = CreateObject("Microsoft.XMLDOM")
XMLFileName = "C:\Users\Input.xml"
XMLFile.async = False
XMLFile.Load (XMLFileName)
XMLFile.validateOnParse = False
Dim mainnode As Object
Dim node As Object
Set mainnode = XMLFile.SelectNodes("//Elements")
For Each node In mainnode
For Each child In node.ChildNodes
Debug.Print child.BaseName
Dim kiddo As Object
For Each kiddo In child.ChildNodes
Debug.Print kiddo.BaseName
Next kiddo
Next child
Next node
End sub
Run Code Online (Sandbox Code Playgroud)
这是示例 XML。我需要num从 XML 中获取属性名称。 …
我在检索 1 个 XML 文件的节点值时遇到问题。对于除此之外的所有其他 XML 文件,它都可以使用。我已经检查过 XML 是否已加载并且确实加载了。我可以在 locals 窗口中找到这些值,因此它肯定会读取 XML 文件。检索此节点值的问题。
我用于其他文件的代码:
Set oXMLFile = CreateObject("Microsoft.XMLDOM")
XMLFileName = Dir(L_Folder & "\*" & Control & "*.xml")
oXMLFile.Load L_Folder & "\" & XMLFileName
Set NameNode = oXMLFile.SelectNodes("/DataSetCollection/DataSet/Data/Lot/LotRunGenKey")
MsgBox NameNode(i).NodeValue
Run Code Online (Sandbox Code Playgroud)
对于我/text()在最后添加的其他 XML 文件,因为每个节点值都有一个额外的文本行。
<?xml version="1.0"?>
<DataSetCollection xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<DataSet Name="" Type="" Version="11.2.0" CreateTime="20200220190104">
<Data IsVirtual="false">
<Lot ID="" LotRunGenKey="4bccbfaf-0868-4240-a94f-724d9a79b102" ARPFlag="1" />
Run Code Online (Sandbox Code Playgroud) vba ×3
excel ×2
xml ×2
access-vba ×1
ms-access ×1
msxml ×1
xml-parsing ×1
xmldom ×1
xpath ×1
xslt ×1