如何从Microsoft Access中的IXMLDOMNodeList获取原始xml?

如何从Microsoft Access中的IXMLDOMNodeList获取原始xml?,xml,ms-access,Xml,Ms Access,如何在Microsoft Access中从MSXML2-IXMLDOMNodeList中提取原始Xml文本?您可以在每个IXmlDomNode上使用。您将使用VBA完成此操作 将相应的msxml dll添加到工具中 编写如下代码: Public Function getFromXML(x_fileXML as string) as string On Error GoTo ERREUR Dim doc_xml As MSXML2.DOMDocument, _

如何在Microsoft Access中从MSXML2-IXMLDOMNodeList中提取原始Xml文本?

您可以在每个IXmlDomNode上使用。

您将使用VBA完成此操作

将相应的msxml dll添加到工具中

编写如下代码:

Public Function getFromXML(x_fileXML as string) as string

On Error GoTo ERREUR

      Dim doc_xml As MSXML2.DOMDocument, _
          list_xml As IXMLDOMNodeList, _ 
          i As Long, _
          m_getFromXML as string


Set doc_xml = New MSXML2.DOMDocument

doc_xml.Load x_fileXML

'i am interested by the nodeLists having a "attributeType: tag"'
Set list_xml = doc_xml.getElementsByTagName("s:AttributeType")
For i = 0 To (list_xml.Length - 1)
     'extract the requested data here'
     'something like m_getFromXML = m_getFromXML & ";" & ...'
Next i

getFromXML = m_getFromXML
这是即时写的。在离开进程之前,请检查要关闭/设置为无的对象。

(此查询是通过代理为我发布的。)所需的确切知识是获取web服务api返回的MSXML2.IXMLDOMNodeList对象,并从节点提取数据。我有一段可用于XML版本的工作代码,但我不想成为MSXML专家只是为了让一个函数工作。这是使用XML输入的版本,如何将其更改为使用节点列表输入?(还可以将节点列表输出为XML吗?这将有助于完成其余步骤

(加:) 我刚刚对节点尝试了.xml属性,这实际上为我提供了整个xml。显然,api发送了一个节点列表,只有一个节点,将.xml属性应用到该节点会生成一个完整的XMLdocument(我不知道如何在这里显示,xml是在预览中处理的)。 (/新增)

私有子解析xml_Click() 将此XML设置为MSXML2.DOMDocument Dim fsucces作为布尔值 作为MSXML2.IXMLDOMNode的Dim oRoot Dim oBooking为MSXML2.IXMLDOMNode 弱智儿童作为MSXML2.IXMLDOMNodeList Dim oChild为MSXML2.IXMLDOMNode 数据库 Dim theRST As记录集 设置db=CurrentDb Set-theRST=db.OpenRecordset(“XMLBookings”,dbOpenDynaset) 设置thisXML=New MSXML2.DOMDocument thisXML.async=False thisXML.validateOnParse=False fSuccess=thisXML.LoadXml(预订) 如果出了什么问题,现在就退出。 如果不成功,那么 去那里 如果结束 设置oRoot=thisXML.documentElement 对于oRoot.childNodes中的每个oBooking 新疗法 设置oChildren=oBooking.childNodes 对于每个oChildren中的oChildren 选择Case oChild.nodeName 案例“EventName” 'MsgBox“EventName=“&oChild.nodeTypedValue theRST!EventName=oChild.nodeTypedValue 案例 (等) 结束选择 下一个赭石 更新“保存更改”。 下一个oBooking MsgBox“完成!” 治疗结束 设为B=无 出口: 出口接头 扶手RR: MsgBox“Error”和Err.Number&“:”和Err.Description 继续离开那里 简历 端接头
这实际上取决于您打算对xml做什么。在access 2003和2007中,我们可以导入xml

因此,如果您有一个xml字符串,它是一个数据表,那么您可以接收数据,将数据写入磁盘,然后执行Application.ImportXML。与这里给出的其他答案相比,这种方法的代码要少得多

以下是此概念的代码剪贴:

Dim intF       As Integer
Dim strF       As String
Dim objXML     As Object

Set objXML = CreateObject("MSXML2.XMLHTTP")
objXML.Open "GET", "URL string here", False
objXML.Send

strF = "c:\t.xml"
intF = FreeFile
Open strF For Output As intF
Write #intF, objXML.responsetext
Close

Application.ImportXML "c:\t.xml", acAppendData
上面假设XML在文本中有一个目录或表def

例如:


1.
卡拉尔
艾伯特
2.
Smo
乔
Dim intF       As Integer
Dim strF       As String
Dim objXML     As Object

Set objXML = CreateObject("MSXML2.XMLHTTP")
objXML.Open "GET", "URL string here", False
objXML.Send

strF = "c:\t.xml"
intF = FreeFile
Open strF For Output As intF
Write #intF, objXML.responsetext
Close

Application.ImportXML "c:\t.xml", acAppendData
<CATALOG>
<tblContacts>
<ID>1</ID>
<Last_x0020_Name>Kallal</Last_x0020_Name>
<First_x0020_Name>Albert</First_x0020_Name>
</tblContacts>
<tblContacts>
<ID>2</ID>
<Last_x0020_Name>Smo</Last_x0020_Name>
<First_x0020_Name>Joe</First_x0020_Name>
</tblContacts>
</CATALOG>