为什么 Msxml DocumentElement/SelectSingleNode 不返回任何内容?

2024-03-08

DocumentElement 属性和 SelectSingleNode 继续不返回任何内容,我已经验证 xml 加载正确,问题似乎出在 xml 解析器中。 xml 没有任何命名空间,因此不需要设置。

Private Function ParseWord(word As String) As String
    Dim tempFile As String
    tempFile = Environ("temp") & "\" & "temporaryWord" & ".xml"
    Call CreateFile(tempFile, word)

    Dim xmlDoc As Object
    Set xmlDoc = CreateObject("MSXML2.DOMDocument.6.0")

    With xmlDoc
     .async = False
     .setProperty "SelectionLanguage", "XPath"
     .validateOnParse = False
     .Load tempFile
     '.setProperty "SelectionNamespaces", ""
     '.Namespaces = False
    End With

    Dim xmlElement As Object
    Set xmlElement = xmlDoc.DocumentElement

    If xmlElement Is Nothing Then
        MsgBox "error in element"
        Exit Function
    End If

    Dim nodeXML As Object
    Set nodeXML = xmlElement.SelectSingleNode("/definitions/definition/text")

    If nodeXML Is Nothing Then
        MsgBox "error"
    Else
        MsgBox nodeXML.Text
        ParseWord = nodeXML.Text
    End If

End Function

xml来源:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?><definitions><definition sequence="0">        <textProns/><sourceDictionary>ahd-legacy</sourceDictionary><exampleUses/><relatedWords/><labels/>   <citations/><word>intransigent</word><attributionText>from The American Heritage® Dictionary of the English Language, 4th Edition</attributionText><text>Refusing to moderate a position, especially an extreme position; uncompromising.</text><partOfSpeech>adjective</partOfSpeech><score>0.0</score></definition></definitions>

createFile 函数来自这里:

http://www.jpsoftwaretech.com/vba/msxml-object-library-routines/#createfile http://www.jpsoftwaretech.com/vba/msxml-object-library-routines/#createfile


从字符串加载 xml 对我来说很有效。(也许是字符串编码问题?)

Sub test()
    'Cell A1 contains the xml
    ParseXML (Range("A1"))
End Sub
Private Function ParseXML(xmlString As String) As String
    Dim tempFile As String

    Dim xmlDoc As Object
    Set xmlDoc = CreateObject("MSXML2.DOMDocument.6.0")

    With xmlDoc
     .async = False
     .setProperty "SelectionLanguage", "XPath"
     .validateOnParse = False
     .LoadXML xmlString
     '.setProperty "SelectionNamespaces", ""
     '.Namespaces = False
    End With

    Dim xmlElement As Object
    Set xmlElement = xmlDoc.DocumentElement

    If xmlElement Is Nothing Then
        MsgBox "error in element"
        Exit Function
    End If

    Dim nodeXML As Object
    Set nodeXML = xmlElement.SelectSingleNode("/definitions/definition/text")

    If nodeXML Is Nothing Then
        MsgBox "error"
    Else
        MsgBox nodeXML.Text
        ParseXML = nodeXML.Text
    End If

End Function
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么 Msxml DocumentElement/SelectSingleNode 不返回任何内容? 的相关文章

  • powershell xml排序节点和替换子节点

    我正在尝试使用 powershell 和 xml 做一些非常简单的事情 但没有遇到任何麻烦 基本上我试图采用以下 xml 并按名称对机器元素进行排序 然后将它们放回到 XML 中 以便我可以保存回文件中 如果输出 new 对象 排序似乎有效
  • 如何使用 VBA 忽略范围内的绿色三角形错误,而不逐个单元循环?

    我有一些正在自动化和分发的大型数据集 我想消除警告用户有关存储为文本的数字的绿色小三角形 我使用了以下代码 但在大量纸张上速度非常慢 Range Cells 1 1 Cells lastrow lColumn Select kill tho
  • 克隆 dom.Document 对象

    我的目的是将xml文件读入Dom对象 编辑dom对象 其中涉及删除一些节点 完成此操作后 我希望将 Dom 恢复到其原始状态 而不实际解析 XML 文件 无论如何 我可以克隆第一次解析 xml 文件后获得的 dom 对象吗 这个想法是避免一
  • 如何在自定义数据验证中使用用户定义的函数?

    In my Worksheet我有一个Table并想要定义Data validation对于包含日期的列 如下所示 S2M B2 lt gt Error 在上面 S2M 是一个用户定义的函数 用于将日期转换为Persian date to
  • VBA 从文本文件的属性获取日期

    我正在尝试获取特定文本文件上传到计算机的日期 该日期不在实际的文本文件中 您必须右键单击然后转到属性才能查看日期 我需要将日期读入变量 我不知道从哪里开始尝试完成这件事 谢谢你 杰西 斯莫瑟蒙 如果内置FileDateTime 不是你可以使
  • 转置 CopyFromRecordset Excel VBA

    我的 Excel VBA 中有以下代码 可将 SQL 中的表中的数据复制到 Excel 中 该数据从单元格 C2 开始水平插入 但我希望将其垂直插入到 C 列 Sheets Control Range C2 CopyFromRecorset
  • DTD 与 XSD 定义的 XML 语言的范围

    下列命题是否成立 对于每个 DTD 都有一个定义完全相同的语言的 XSD 并且对于每个 XSD 都有一个定义完全相同的语言的 DTD 或者换句话说 任何 DTD 定义的语言集合正是任何 XSD 定义的语言集合 稍微扩展一下这个问题 XML
  • 如何仅从 XML 生成 JAXB 类

    我需要从不提供架构的 xml 生成类 我知道这几乎没有用 但事实是我们有 xml 它是结构化的 我们应该能够从 xml 创建模型 过去我都是手工完成的 但是当前我正在使用的 xml 文档非常大 我的时间可能会更好地花在构建满足我需要的东西上
  • 将 .XLS 转换为制表符分隔的 .TXT

    我可以使用 C 将 Excel XLS 文件转换为 txt tsv 制表符分隔值 文件吗 使用 OleDb 可能很棘手 并且可能会导致问题 具体取决于创建电子表格的 Excel 版本 例如 上面的示例适用于 xls 但不适用于 xlsx 您
  • 使用 Sandcastles 将图像嵌入 CHM 帮助文件

    我正在使用 Sandcastles 为我的项目生成 CHM 帮助文件 我想要一个可以分发的独立 CHM 文件 最好是单独分发 我遇到的问题是嵌入图像appears该图像需要与 CHM 文件分开存在于用户系统上 当我查看 CHM 文件的来源时
  • ATL创建的COM接口继承IDispatch但后期绑定不起作用

    这是我的 IDL 文件 IFrame 是一个双接口 同时继承了 IDispatch 和 IUnknown object uuid C5AD0517 37FC 479C 9C7A A063B17E4A2E dual nonextensible
  • Delphi - 通过 ADO 查询获取 Excel 行

    我有以下 Excel 文件 我将 AdoConnection ConnectionString 设置为 AdoConnection ConnectionString Provider Microsoft Jet OLEDB 4 0 Data
  • VBScript for Excel:如何选择源数据 (.SetSourceData)?

    我已经在谷歌和这里搜索了这个问题的答案 但没有成功 如果之前有人问过 那么我道歉 我正在尝试使用 VBScript 自动执行一些管理任务 此特定脚本的目的是从文本文件 包含文本和数字列 中获取一些使用情况统计信息 并根据数据制作折线图 创建
  • 由带有换行符的 DOMDocument 生成的 XML

    我正在使用 PHP DOMDocument 创建 XML 文件 并且这些 XML 文件不能包含换行符 但是当我使用该方法时 保存 XML 生成的 XML 在定义和初始标记之间有一个换行符 如下所示
  • 单击“发送”按钮事件时,我们可以在哪里获取 xml/元数据格式的表单数据?

    我是一个新的 scala 学习者 作为要求的一部分 我需要将表单数据插入 activemq 队列中以进行提交事件 我尝试调试发送方法代码 以了解单击 FormRunnerActions scala 类中的发送按钮时我们到底在哪里获取 xml
  • Android 矩形有两种不同的颜色

    如何通过使用两种不同颜色和阴影来创建矩形形状 就像上图一样 Please create a drawable file and put the below code in it
  • 调试 xslt 的工具

    我有一个 Java servlet 它生成 XML 使用 XSLT 样式表对其进行翻译 然后显示生成的 HTML 这是我第一次使用 XSLT 调试 XSLT 的好方法是什么 我也有 或可以获得 一些示例 XML 文件来应用转换 但我什至不确
  • C# Xml-使用 IXmlSerialized 序列化派生类

    我有一个与 XML 序列化兼容的基类和一个实现 IXmlSerialized 的派生类 在此示例中 基类确实实现了 IXmlSerializable using System Diagnostics using System Text us
  • 如何使此 XSL 转换仅考虑具有相同 id 的兄弟姐妹?

    我有这个 XSLT 2 0
  • 将参数传递给使用“New”创建的访问表单

    我有一个名为 详细信息 的表单 它显示所选记录的详细视图 该记录是从称为 搜索 的不同形式中选择的 因为我希望能够打开 详细信息 的多个实例 每个实例显示不同记录的详细信息 所以我使用了以下代码 Public detailCollectio

随机推荐