根据匹配字符串将XML检索到excel

根据匹配字符串将XML检索到excel,xml,vba,Xml,Vba,我有一个日志文件,它由几个xml请求和响应组成。我的要求是找到一个字符串,无论它是否存在于日志文件中的任何xml请求/响应中,如果字符串存在,则使用VBA(Excel宏)检索xml。有人能帮忙吗 注意:日志文件不是.xml格式。它的文件扩展名是.LOG。现在我将它作为文本文件处理 日志文件的示例格式: [8/9/2015:12:00]<?xml version="1.0" encoding="UFT-8"?> <soapenv:Envelope xmlns="https

我有一个日志文件,它由几个xml请求和响应组成。我的要求是找到一个字符串,无论它是否存在于日志文件中的任何xml请求/响应中,如果字符串存在,则使用VBA(Excel宏)检索xml。有人能帮忙吗

注意:日志文件不是.xml格式。它的文件扩展名是.LOG。现在我将它作为文本文件处理

日志文件的示例格式:

[8/9/2015:12:00]<?xml version="1.0" encoding="UFT-8"?>
    <soapenv:Envelope xmlns="https://schemas.xmlsoap.org/"><soapenv:Header.....>
    .
    .
    <validity message-id="ABC12345678">
    .
    </validity>
    .
    .</soapenv:envelope>
    [8/9/2015:12:44]<?xml version="1.0" encoding="UFT-8"?>
    <soapenv:Envelope xmlns="https://schemas.xmlsoap.org/"><soapenv:Header.....>
    .
    .
    <validity message-id="PQR12345678">
    .
    </validity>
    .
    .</soapenv:envelope>
[8/9/2015:12:00]
.
.
.
.
.
[8/9/2015:12:44]
.
.
.
.
.

我希望检索消息id为PQR12345678的xml。这段代码可以帮助您开始

“添加引用Microsoft XML,v6.0”
公共子下载文件()
作为对象的Dim objWHTTP
将strPath设置为字符串
将数据()设置为字节
Dim lngFreeFile的长度为
出错时继续下一步
设置objWHTTP=CreateObject(“WinHTTP.WinHTTPrequest.5”)
如果错误号为0,则
设置objWHTTP=CreateObject(“WinHTTP.WinHTTPrequest.5.1”)
如果结束
错误转到0
URL=“在此处输入您的URL或文件名”
objWHTTP.Open“GET”,URL,False
objWHTTP.send
arrData=objWHTTP.responseBody
strData=StrConv(arrData,vbUnicode)
Dim xmlbook作为新的MSXML2.DOMDocument60
xmlbook.LoadXML标准数据

端接头​此代码可能会帮助您开始

“添加引用Microsoft XML,v6.0”
公共子下载文件()
作为对象的Dim objWHTTP
将strPath设置为字符串
将数据()设置为字节
Dim lngFreeFile的长度为
出错时继续下一步
设置objWHTTP=CreateObject(“WinHTTP.WinHTTPrequest.5”)
如果错误号为0,则
设置objWHTTP=CreateObject(“WinHTTP.WinHTTPrequest.5.1”)
如果结束
错误转到0
URL=“在此处输入您的URL或文件名”
objWHTTP.Open“GET”,URL,False
objWHTTP.send
arrData=objWHTTP.responseBody
strData=StrConv(arrData,vbUnicode)
Dim xmlbook作为新的MSXML2.DOMDocument60
xmlbook.LoadXML标准数据

端接头​需要查看xml示例。不太难。您对Microsoft XML X.X(我认为6.0是最新版本)的参考需要查看XML示例。不太难。您对这个Microsoft XML X.X(我认为6.0是最新的)的参考是一个很好的建议,但正如您所评论的,它实际上取决于XML文件的结构。MSXML的LoadXML只处理以元素为中心的XML文件,而不以属性为中心,OP似乎请求属性值:
message id=PQR12345678
。另外,您可以在不引用MSXML的情况下进行后期绑定,v6:
Dim xmlbook作为对象集xmlbook=CreateObject(“MSXML2.DOMDocument60”)
我同意。使用了从网页获取数据的代码。如果xml来自文件,则需要更改代码。xml来自文件(.log扩展名),但不是来自网页。建议不错,但正如您所评论的,这实际上取决于xml文件的结构。MSXML的LoadXML只处理以元素为中心的XML文件,而不以属性为中心,OP似乎请求属性值:
message id=PQR12345678
。另外,您可以在不引用MSXML的情况下进行后期绑定,v6:
Dim xmlbook作为对象集xmlbook=CreateObject(“MSXML2.DOMDocument60”)
我同意。使用了从网页获取数据的代码。如果xml来自文件,则需要更改代码。xml来自文件(.log扩展名),但不来自网页。