MSXML是Microsoft XML核心服务,包括完整的XML DOM实现。
美好的一天! 目前,我们的一台服务器上安装了 MSXML 4,这是一个过时的版本。 现在我们要将其升级到MSXML 6.0 SP2。 但是我无法从可以安装 MSXM 的位置获取链接...
DTD 使用 MSXML2.DOMDocument60 加载 XML 时出错
我已经开发了一系列使用 MSXML2.DOMDocument60 处理 xml 文件的函数。但是,当我尝试使用下面的代码加载 html 页面时,我收到一条错误消息 “DTD 不是
如何使用 VBA 和 MSXML2.XMLHTTP 解析公共网站 HTML 代码中的内容?
在此公共网站上,根据所选的联邦州,右侧列出了 30 个房产。如果这个联邦州提供超过 30 个房产,那么另外 30 个房产会列在...
MSXML / ServerXmlHttp POST 间歇性失败(Delphi)
我有一些遗留的 Delphi 代码,它们使用 MSXML 组件将 XML 发布到安全的 Web 服务器。 该代码多年来一直运行良好。 最近,我们做了一些更改,使 XML 文件变得...
如何使用命名空间前缀进行转换?添加它 do xslt 不起作用
问题来了。 XMLDOM(Microsoft.XMLDOM 对象)不缩进 XML。它是人类无法读取的。 以前,在制作 XML 文档后,我只会运行此转换 问题来了。 XMLDOM(Microsoft.XMLDOM 对象)不缩进 XML。它是人类无法读取的。 以前,在制作 XML 文档后,我只会运行此转换 <?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:output method='xml' version='1.0' encoding='UTF-8' indent='yes'/> <xsl:template match="@*|node()"> <xsl:copy> <xsl:apply-templates select="@*|node()"/> </xsl:copy> </xsl:template> </xsl:stylesheet> 在某处找到的。 然后我将使用原始 XML 对象 oXDoc,使用此 XSLT 转换创建此 XML 对象 oXsl 指令,然后调用transformNodeToObject,并创建一个第三个对象oRes,它将是一个已经缩进的XML,然后将该第三个对象保存到磁盘或其他地方。 oXDoc.transformNodeToObject(oXsl, oRes) oRes.Save(cXmlFile) 它工作得很好,直到出现具有非默认名称空间的文档。 例如,像这样的 XML <?xml version="1.0" encoding="UTF-8"?> <Invoice xmlns="urn:oasis:names:specification:ubl:schema:xsd:Invoice-2" xmlns:cbc="urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2" xmlns:cac="urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2"> <cbc:IssueDate>2024-11-07</cbc:IssueDate> <cac:AccountingSupplierParty> <cac:Party> <cbc:EndpointID schemeID="1234">AB90000012345</cbc:EndpointID> </cac:Party></cac:AccountingSupplierParty></Invoice> 不再有效,但我在 XSL 中包含了所有名称空间,当我寻找答案时,所有名称似乎都在说同样的事情。 <?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:cbc="urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2" xmlns:cac="urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2" xmlns="urn:oasis:names:specification:ubl:schema:xsd:Invoice-2"> <xsl:output method='xml' version='1.0' encoding='UTF-8' indent='yes'/> <xsl:template match="@*|node()"> <xsl:copy> <xsl:apply-templates select="@*|node()"/> </xsl:copy> </xsl:template> </xsl:stylesheet> 如果我删除原始 XML 文档中的所有前缀,它会起作用,它会缩进并包含所有名称空间绑定,但它没有用!我需要提供所有前缀,因为它们之间有很多通用名称,例如名称或 ID 等,否则它们会变得不明确。 那么正确的做法是什么呢?如何使其缩进文档并保留所有前缀而不出错?我按原样复制文档,仅添加缩进。无需实际转换。 我试过这个: <xsl:template match="@*|node()"> <xsl:copy> <xsl:apply-templates select="@*|node()"/> </xsl:copy> <xsl:template match="@*|*:node()"> <xsl:copy> <xsl:apply-templates select="@*|*:node()"/> </xsl:copy> 和 这个 <xsl:template match="@*|:node()"> <xsl:copy> <xsl:apply-templates select="@*|:node()"/> </xsl:copy> 甚至这个 <xsl:template match="@*|:node()"> <xsl:copy> <xsl:apply-templates select="@*|node()|cbc:node()|cac:node()"/> </xsl:copy> 还有很多很多其他的。 原始代码会出现错误,仅显示“msxml3:只有默认命名空间可以有空 URI”之类的内容。这真的很奇怪。所有命名空间都写在两个文档中,那么是什么给出了??? 其他尝试只是不喜欢该模式,并且错误显示“无效匹配模式”、“找到:”、“预期 eof”等等。 我也尝试过包括 extension-element-prefixes="cbc cac #default" 进入 xsl:stylesheet 元素,结果为零。 更新: 好吧,如果我在转换之前将 xml 保存到磁盘,然后再次将其加载到同一个对象中并进行转换,那么这最终可以工作。 也许元素的创建方式有问题?我只是将前缀和名称放在一起,如下所示: oEl = oMainEl.appendChild(oXDoc.createElement("cac:Party")).appendChild(oXDoc.createElement("cbc:EndpointID")) oEl.Text = "AB90000012345" oEl.setAttribute("schemeID", "1234") 很奇怪。也许需要进行一些奇怪的操作 如果我没记错的话,使用 MSXML,要在某个命名空间中正确创建一般元素或节点,不要使用 createElement,使用专有的 createNode https://learn.microsoft.com/en -us/previous-versions/windows/desktop/ms757901(v=vs.85) 确保传入节点类型、限定名称和要创建的节点的命名空间 URI。 参见https://learn.microsoft.com/en-us/previous-versions/windows/desktop/ms757047(v=vs.85)中关于createElement的备注: 使用该方法创建元素与使用createNode是一样的 其中类型参数值为 NODE_ELEMENT 并且没有命名空间 指定。 您不能使用以下方法创建命名空间限定的元素 创建元素方法。无论命名空间前缀是否为 包含在 tagName 参数*,* 的 namespaceURI 属性中 新元素节点设置为空字符串“”。一个元素节点 作为 XML 文档加载操作的一部分构造的永远不会有 前缀和空命名空间统一资源标识符 (统一资源定位符)。您只能使用以下命令创建命名空间限定的元素 DOMDocument 对象的 createNode 方法。
XSD 的官方规范是否允许使用 重新定义派生类型中的属性值(默认/固定)? MSXML 和 Xerces-C 都允许这样做,但 libxml2 不允许(不允许
在Excel中使用VBA在IE中Google搜索并返回第一个结果的超链接
我一直在尝试使用IE自动化来谷歌搜索Excel中的一串文本。我想返回 Excel 中另一个单元格中第一个结果的网站的超链接。这可能吗...
MSXML:从 url 非异步加载 xml 会导致 E_ACCESSDENIED
尝试使用 msxml 从 url 加载 xml: 将 .async 设置为 false(默认为 true)会导致尝试从 url 进行 .load 时出现 E_ACCESSDENIED 错误 变量 文档:DOMDocument60; 开始 doc := CoDOMDocumen...
示例代码:Microsoft MSXML.DOMDocument 中的 VB getNamedItem XML 属性[重复]
抱歉,我知道这是旧时代的东西,但我在这里有点大脑衰退,我只需要一个特定的代码示例来继续...... 这是使用远程返回的 XML 片段时出现的问题
示例:Microsoft MSXML.DOMDocument 中的 VB getNamedItem XML 属性 [重复]
抱歉,我知道这是旧时代的东西,但我在这里有点大脑衰退,我只需要一个特定的代码示例来继续...... 这是使用远程返回的 XML 片段时出现的问题
使用 Microsoft MSXML.DOMDocument 获取根 XML 属性[重复]
抱歉,我知道这是过去的事情,但我在这里遭受了一点脑退化...... 这是远程服务返回的 XML 片段 抱歉,我知道这是旧时代的东西,但我在这里遭受了一点大脑衰退...... 这是远程服务返回的 XML 片段 <pap> <push-response push-id="99c2d0d3-6cce-4207-88c4-54bc8e852501"> <address address-value="WIN">5557489580</address> <response-result code="1000"/> </push-response> </pap> 几年前我编写了一个简单的 VB 函数,用于从 XML 中提取我想要的数据 Function ExtractDataFromXML2(ByRef sInputXML As String) As String Dim XMLDom As MSXML.DOMDocument Dim currNode As MSXML.IXMLDOMNodeList Dim Node As MSXML.IXMLDOMNode Dim sError As String Dim sMessageID As String Dim sResult As String XMLDom = New MSXML.DOMDocument XMLDom.async = False If (XMLDom.loadXML(sInputXML) = False) Then sResult = "XML Parse Error: " & XMLDom.parseError.reason & " code=" & XMLDom.parseError.errorCode & " " & Chr(13) & Chr(10) Else currNode = XMLDom.selectNodes("//push-response") For Each Node In currNode sError = Node.selectSingleNode("response-result").attributes.getNamedItem("code").Text sMessageID = "rubbish" If sError = "1000" Then sResult = Node.selectSingleNode("address").Text & "@" & sMessageID Else sResult = "Error " & sError & ": " & Node.selectSingleNode("response-result").attributes.getNamedItem("desc").Text End If Next Node End If ExtractDataFromXML2 = sResult End Function 对于我来说,我不记得如何将 GUID push-id 放入我的 sMessageID 当前初始化的“垃圾” 否则工作正常...只需要一行 VB,拜托...? 应该是的。 sMessageID = Node.attributes.getNamedItem("push-id").Text
使用 Microsoft MSXML.DOMDocument 提取 XML 元素
抱歉,我知道这是旧时代的东西,但我在这里遭受了一点脑退化...... 这是远程服务返回的 XML 片段 抱歉,我知道这是旧时代的东西,但我在这里遭受了一点大脑衰退...... 这是远程服务返回的 XML 片段 <pap> <push-response push-id="99c2d0d3-6cce-4207-88c4-54bc8e852501"> <address address-value="WIN">5557489580</address> <response-result code="1000"/> </push-response> </pap> 几年前我编写了一个简单的 VBA 函数,用于从 XML 中提取我想要的数据 Function ExtractDataFromXML2(ByRef sInputXML As String) As String Dim XMLDom As MSXML.DOMDocument Dim currNode As MSXML.IXMLDOMNodeList Dim Node As MSXML.IXMLDOMNode Dim sError As String Dim sMessageID As String Dim sResult As String XMLDom = New MSXML.DOMDocument XMLDom.async = False If (XMLDom.loadXML(sInputXML) = False) Then sResult = "XML Parse Error: " & XMLDom.parseError.reason & " code=" & XMLDom.parseError.errorCode & " " & Chr(13) & Chr(10) Else currNode = XMLDom.selectNodes("//push-response") For Each Node In currNode sError = Node.selectSingleNode("response-result").attributes.getNamedItem("code").Text sMessageID = "rubbish" If sError = "1000" Then sResult = Node.selectSingleNode("address").Text & "@" & sMessageID Else sResult = "Error " & sError & ": " & Node.selectSingleNode("response-result").attributes.getNamedItem("desc").Text End If Next Node End If ExtractDataFromXML2 = sResult End Function 对于我来说,我不记得如何将 GUID push-id 放入我的 sMessageID 当前初始化的“垃圾” 否则工作正常...只需要一行 VBA,拜托...? 应该是sMessageID = Node.attributes.getNamedItem("push-id").Text。
VBscript 使用 Microsoft MSXML.DOMDocument 提取 XML 元素
抱歉,我知道这是旧时代的东西,但我在这里遭受了一点脑退化...... 这是远程服务返回的 XML 片段 抱歉,我知道这是旧时代的东西,但我在这里遭受了一点大脑衰退...... 这是远程服务返回的 XML 片段 <pap> <push-response push-id="99c2d0d3-6cce-4207-88c4-54bc8e852501"> <address address-value="WIN">5557489580</address> <response-result code="1000"/> </push-response> </pap> 几年前我编写了一个简单的 VBscript 函数,用于从 XML 中提取我想要的数据 Function ExtractDataFromXML2(ByRef sInputXML As String) As String Dim XMLDom As MSXML.DOMDocument Dim currNode As MSXML.IXMLDOMNodeList Dim Node As MSXML.IXMLDOMNode Dim sError As String Dim sMessageID As String Dim sResult As String XMLDom = New MSXML.DOMDocument XMLDom.async = False If (XMLDom.loadXML(sInputXML) = False) Then sResult = "XML Parse Error: " & XMLDom.parseError.reason & " code=" & XMLDom.parseError.errorCode & " " & Chr(13) & Chr(10) Else currNode = XMLDom.selectNodes("//push-response") For Each Node In currNode sError = Node.selectSingleNode("response-result").attributes.getNamedItem("code").Text sMessageID = "rubbish" If sError = "1000" Then sResult = Node.selectSingleNode("address").Text & "@" & sMessageID Else sResult = "Error " & sError & ": " & Node.selectSingleNode("response-result").attributes.getNamedItem("desc").Text End If Next Node End If ExtractDataFromXML2 = sResult End Function 对于我来说,我不记得如何将 GUID push-id 放入我的 sMessageID 当前初始化的“垃圾” 否则工作正常...只需要一行 VBscript,拜托...? 应该是sMessageID = Node.attributes.getNamedItem("push-id").Text。
使用带有动态/部分已知 URL 循环的 MS XML、6.0 库发送 HTTP 请求
我正在尝试在 www.statmuse.com 上循环浏览投手的比赛日志。主要问题是,由于我试图在循环中执行此操作,因此部分 URL 目前未知。 例如,看着妈妈...
C++“'DOMDocument':重新定义”Xercesc 错误
我的问题是 Xerces 和 Windows 都有一个“DOMDocument”对象。 Xerces 和我在这里、这里和这里读到的几乎所有内容都建议定义名称空间或取消定义 DOMDocument ...
如何设置 XMLDOMDocument 的 doctype?
如何设置 DOMDocument60 对象的文档类型? 例如我尝试: IXMLDOMDocument60 doc = new DOMDocument60(); doc.doctype.name = "html"; 除了 IXMLDOMDocumentType.name 是只读的之外:
VBA 中的 XML 解析出现问题:从 NodeList 中提取多个节点值
下面的 XML 文档是包含订单项目的发票。 必须为每个订单项目提取各种主数据。 为了简单起见,我们只考虑 ...
向 MSXML 添加命名空间时出现问题(使用 setProperty('SelectionNamespaces', ...))
不久前,我问了一个有关 MSXML 中命名空间的使用的问题。起初,我用 XPath *[local-name()]-hack 绕过了整个事情(请参阅我之前的帖子),但遇到了危机......
我正在尝试加载一个简单的 Xml 文件(以 UTF-8 编码): 并将其用 MSXML 保存在 vbscript 中: 设置 xmlDoc = CreateObject("MSXML2.DOMDocum...
如何使用 MS XML 6.0 进行 TransformNodeToObject
在 MS XML 4.0 中你可以有变量(这里使用 C++) IXMLDOMDocument2Ptr spDocSource; IXMLDOMDocument2Ptr spDocResult; IXMLDOMDocument2Ptr spDocStylesheet; 然后加载它们并执行