Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
xpath在vba解析xml文档中的应用_Vba_Xpath_Web Scraping_Xml Parsing_Xmldom - Fatal编程技术网

xpath在vba解析xml文档中的应用

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

今天我在博客上看到了一个演示,演示了如何使用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.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