xpath在vba解析xml文档中的应用
今天我在博客上看到了一个演示,演示了如何使用vba从xml文档中应用xpath解析项目。如果在一个网站上也能做到这一点,那就太棒了 以下是如何从本地保存的文件执行此操作:xpath在vba解析xml文档中的应用,vba,xpath,web-scraping,xml-parsing,xmldom,Vba,Xpath,Web Scraping,Xml Parsing,Xmldom,今天我在博客上看到了一个演示,演示了如何使用vba从xml文档中应用xpath解析项目。如果在一个网站上也能做到这一点,那就太棒了 以下是如何从本地保存的文件执行此操作: Sub XML_Parsing() Dim xml As Object, post As Object Set xml = CreateObject("MSXML2.DOMDocument") xml.async = False: xml.validateOnParse = False xml
Sub XML_Parsing()
Dim xml As Object, post As Object
Set xml = CreateObject("MSXML2.DOMDocument")
xml.async = False: xml.validateOnParse = False
xml.Load (ThisWorkbook.Path & "\htdocs.txt")
For Each post In xml.SelectNodes("//DistributionLists/List")
x = x + 1: Cells(x, 1) = post.SelectNodes(".//Name")(0).Text
Cells(x, 2) = post.SelectNodes(".//TO")(0).Text
Cells(x, 3) = post.SelectNodes(".//CC")(0).Text
Cells(x, 4) = post.SelectNodes(".//BCC")(0).Text
Next post
End Sub
上述代码应应用于桌面上保存的名为“htdocs.txt”的文本文件
<?xml version="1.0" encoding="utf-8"?>
<DistributionLists>
<List>
<Name>Recon</Name>
<TO>John;Bob;Rob;Chris</TO>
<CC>Jane;Ashley</CC>
<BCC>Brent</BCC>
</List>
<List>
<Name>Safety Metrics</Name>
<TO>Tom;Casper</TO>
<CC>Ashley</CC>
<BCC>John</BCC>
</List>
<List>
<Name>Performance Report</Name>
<TO>Huck;Ashley</TO>
<CC>Tom;Andrew</CC>
<BCC>John;Seema</BCC>
</List>
</DistributionLists>
现在,我有两个问题:
1. How to parse the same from a website as i did above, as in "example.com"? If it was "html element" then i could load like "html.body.innerHTML = http.responsetext" but in this case what should be the process?
2. If i do the above thing using EARLY BINDING: what should be the reference to add to the library?
似乎已经找到了解决办法。这是:
Sub XML_Parsing()
Dim http As New XMLHTTP60
Dim xmldoc As Object, post As Object
With http
.Open "GET", "http://wservice.viabicing.cat/v1/getstations.php?v=1", False
.send
Set xmldoc = .responseXML
xmldoc.LoadXML .responseXML.xml
End With
For Each post In xmldoc.SelectNodes("//station")
x = x + 1: Cells(x, 1) = post.SelectNodes(".//lat")(0).Text
Cells(x, 2) = post.SelectNodes(".//long")(0).Text
Next post
End Sub
部分结果:
$41.40 2.180042
41.39553 2.17706
41.393699 2.181137
41.39347 2.18149
$41.40 2.180042
41.39553 2.17706
41.393699 2.181137
41.39347 2.18149