我正在使用VBA脚本从xml文档中获取数据。我需要帮助来修改我的XPath代码以搜索部分字符串而不是整个字符串。 这是我目前的表达方式:
xmlhttpResponse.SelectNodes("/CharacteristicList/Characteristic[Name='ZCOMP_A_03']
/ComplexValueList/ValueItem/Value").Item(0).text
我想做的是这样的[Name='ZCOMP_A_']
,但它似乎不存在或像这样工作。我看到一些带有starts-with和contains的代码,但是我想使用与已经使用过的XPath类似的XPath(如果可能的话)。
这是XML代码的一部分。
<CharacteristicList>
<Characteristic>
<Name>ZCOMP_A_03</Name>
<ValueList>
<ValueItem>
<Value>10.50</Value>
更新1! 我根据kjhughes进行了一些更改,但是我收到了“未知方法”错误。 这是更新的代码:
Dim xmlhttpRequest As New MSXML2.xmlhttp
Dim xmlhttpResponse As New MSXML2.DOMDocument
xmlhttpResponse.setProperty "SelectionLanguage", "XPath"
Envelope = Envelope & "</soapenv:Envelope>"
xmlhttpRequest.Open "POST", "http://website.xyz"
xmlhttpRequest.setRequestHeader "Content-Type", "text/xml;charset=UTF-8"
xmlhttpRequest.setRequestHeader "SOAPAction", "http://website2.xyz"
xmlhttpRequest.send Envelope
Set xmlhttpResponse = xmlhttpRequest.responseXML
'Lenght_1 = xmlhttpResponse.SelectNodes("//Characteristic[Name='ZCOMP_A_03']/ComplexValueList/ValueItem/Value").Item(0).text Previous version
Lenght_2 = xmlhttpResponse.SelectNodes("//Characteristic[starts-with(Name,'ZCOMP_A_')]/ComplexValueList/ValueItem/Value").Item(0).text
答案 0 :(得分:1)
我想做的是这样的
[Name='ZCOMP_A_']
,但是 它似乎不存在或像这样工作。我看到了一些代码 starts-with和contains,但我想使用类似的xpath 已经使用的那个(如果可能的话)。
Characteristic[Name='ZCOMP_A_']
选择Characteristic
元素,其中Name
子项的字符串值 等于 ZCOMP_A_
。
如果您希望它以该字符串开头,请使用
Characteristic[starts-with(Name,'ZCOMP_A_')]
如果您希望它出现在该字符串中的任何位置,请使用
Characteristic[contains(Name,'ZCOMP_A_')]
不,没有缩短的形式可以起作用。
答案 1 :(得分:0)
检查一下。如果这是你想要尝试的:
Sub DemoXML()
Dim XDoc As New DOMDocument, elem As Object, strXML As String
strXML = "<CharacteristicList><Characteristic><Name>ZCOMP_A_03</Name><ValueList><ValueItem><Value>10.50</Value></ValueItem></ValueList></Characteristic></CharacteristicList>"
XDoc.LoadXML (strXML)
For Each elem In XDoc.SelectNodes("//Characteristic")
[A1] = elem.SelectNodes(".//Name")(0).Text
[B1] = elem.SelectNodes(".//Value")(0).Text
Next elem
End Sub
参考添加:
Microsoft XML V6.0
结果:
ZCOMP_A_03
10.5