XPath 错误。节点不能在创建它的文档以外的文档中使用

2024-03-01

我正在尝试使用 XPath 解析 xml 文档。

该脚本在 chrome 上运行良好,但出现以下错误:

WrongDocumentError:节点不能在除 它是在其中创建的

有问题的代码如下:

function StringToXML(oString) {
    //code for IE
    if (window.ActiveXObject) {
        var oXML = new ActiveXObject("Microsoft.XMLDOM"); oXML.loadXML(oString);
        return oXML;
    }
    // code for Chrome, Safari, Firefox, Opera, etc.
    else {
        return (new DOMParser()).parseFromString(oString, "text/xml");
    }
}

function parseGpx(xmlText){
    var pointArray = new Array();
    var $xml = StringToXML(xmlText);
    var path = "//*[local-name()='trkpt']";
    var paragraphCount = document.evaluate(path, $xml, null, XPathResult.ORDERED_NODE_ITERATOR_TYPE, null );
    //this last line is what is causing the problems.

我想知道可能是什么问题,这是我的 console.logs 的结果:

控制台.log(xmlText):

<?xml version="1.0" encoding="iso-8859-1"?>
<gpx version="1.0" creator="http://www.bikecityguide.org"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns="http://www.topografix.com/GPX/1/0"
    xsi:schemaLocation="http://www.topografix.com/GPX/1/0 http://www.topografix.com/GPX/1/0/gpx.xsd">
    <name></name>
    <desc></desc>
    <time>2013-10-10T17:54:09Z</time>
    <bounds minlat="47.068677710511" minlon="15.423460100401" maxlat="47.074318908518" maxlon="15.431141947021"/>
    <trk>
        <trkseg>
            <trkpt lon= "15.429682825318" lat="47.074318908518" />
            <trkpt lon= "15.428824518436" lat="47.071922203043" />
            <trkpt lon= "15.424404237975" lat="47.071366853467" />
            <trkpt lon= "15.423460100401" lat="47.068677710511" />
            <trkpt lon= "15.427107904664" lat="47.068970015231" />
            <trkpt lon= "15.428781603085" lat="47.070957644813" />
            <trkpt lon= "15.430755708927" lat="47.071016103385" />
            <trkpt lon= "15.430326555481" lat="47.072068346707" />
            <trkpt lon= "15.431141947021" lat="47.072068346707" />
            <trkpt lon= "15.430884454953" lat="47.074114315917" />
        </trkseg>
    </trk>
<wpt lon="15.429682825318" lat="47.074318908518"></wpt>
<wpt lon="15.428824518436" lat="47.071922203043"></wpt>
<wpt lon="15.424404237975" lat="47.071366853467"></wpt>
<wpt lon="15.423460100401" lat="47.068677710511"></wpt>
<wpt lon="15.427107904664" lat="47.068970015231"></wpt>
<wpt lon="15.428781603085" lat="47.070957644813"></wpt>
<wpt lon="15.430755708927" lat="47.071016103385"></wpt>
<wpt lon="15.430326555481" lat="47.072068346707"></wpt>
<wpt lon="15.431141947021" lat="47.072068346707"></wpt>
<wpt lon="15.430884454953" lat="47.074114315917"></wpt>

</gpx>

控制台.log($xml):

URL
    "http://localhost/trackeditor/"

activeElement
    gpx

async
    true

baseURI
    "http://localhost/trackeditor/"

characterSet
    "UTF-8"

childNodes
    NodeList[gpx]

compatMode
    "CSS1Compat"

contentType
    "text/xml"

currentScript
    null

defaultView
    null

dir
    ""

doctype
    null

documentElement
    gpx

documentURI
    "http://localhost/trackeditor/"

firstChild
    gpx

hidden
    true

implementation
    DOMImplementation { hasFeature=hasFeature(), createDocumentType=createDocumentType(), createDocument=createDocument(), more...}

inputEncoding
    "UTF-8"

lastChild
    gpx

lastModified
    "10/16/2013 13:15:31"

lastStyleSheetSet
    null

localName
    null

location
    null

mozFullScreen
    false

mozFullScreenElement
    null

mozFullScreenEnabled
    false

mozHidden
    true

mozPointerLockElement
    null

mozVisibilityState
    "hidden"

namespaceURI
    null

nextSibling
    null

nodeName
    "#document"

nodeType
    9

nodeValue
    null

ownerDocument
    null

parentElement
    null

parentNode
    null

preferredStyleSheetSet
    ""

prefix
    null

previousSibling
    null

readyState
    "complete"

referrer
    ""

selectedStyleSheetSet
    ""

styleSheetSets
    Object { length=0, item=item(), contains=contains()}

styleSheets
    Object { length=0, item=item()}

textContent
    null

title
    ""

visibilityState
    "hidden"

__proto__
    XMLDocumentPrototype { ELEMENT_NODE=1, ATTRIBUTE_NODE=2, TEXT_NODE=3, more...}

我想知道为什么会发生这种情况,谷歌搜索这个问题的几乎所有结果都与 TinyMCE 相关,并且没有太大帮助。


而不是这个:

var paragraphCount = document.evaluate(path, $xml, null,
                         XPathResult.ORDERED_NODE_ITERATOR_TYPE, null );

你应该使用:

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

XPath 错误。节点不能在创建它的文档以外的文档中使用 的相关文章

随机推荐

  • 字符串作为模型

    我认为这应该是一个更容易的任务 Edit 直到今天 Asp Net MVC 似乎还无法针对这种情况提供一个简洁的解决方案 如果您想传递一个简单的字符串作为模型 并且不必定义更多的类和东西来这样做 有任何想法吗 传递简单字符串作为模型 htt
  • 对齐宏内核

    我无法理解这个宏的作用 这些定义在linux kernel但我的怀疑与此无关 我无法理解什么是 x mask mask 线确实如此 define ALIGN x a ALIGN MASK x typeof x a 1 define ALIG
  • 获取 span 元素填充 div 中的空间

    我正在尝试做这样的事情 fixed width Title1 value1 Title2 another value Another title yet another value 这是我的 html 示例代码 div class cont
  • Java 8 Streams peek/map 不收集不提供输出

    下面的代码不打印任何值 没有打印任何 System out println 语句 我假设 peek 涉及修改数据 令人惊讶的是 peek 内部的逻辑甚至没有被执行 如果我使用收集器收集流 我会看到所需的行为 为什么至少 print 语句 1
  • 使用脚本在电子邮件中嵌入谷歌表单,就像使用电子邮件中包含表单选项时谷歌所做的那样

    我必须向一些人发送一份表格 我用谷歌脚本来完成 我尝试使用以下代码将表单嵌入到电子邮件中 https stackoverflow com a 23671529 4305236 https stackoverflow com a 236715
  • NodeJs 延迟 Promise.all() 中的每个 Promise

    我正在尝试更新不久前创建的一个使用nodejs的工具 我不是JS开发人员 所以我试图将代码拼凑在一起 但我陷入了最后一个障碍 新功能将采用 swagger json 定义 使用以下方法将端点与 AWS 服务上匹配的 API 网关进行比较 a
  • Oracle 相当于 SQL Server 包含要索引的列

    Oracle 是否允许我包含要索引的列 如 SQL ServerINCLUDE中的条款CREATE INDEX Thanks 不 Oracle 中的索引要么包含索引本身中的列 要么不包含 然而 根据您尝试解决的问题 索引组织表可能是 Ora
  • macOS Catalina - 无法打开“fse.node”,因为无法验证开发人员。在执行 npm run dev 或 watch 时

    在 macOS Catalina 10 15 3 上 我在运行时收到以下错误消息npm run dev or npm run watch 这似乎与nodejs但不知道如何解决它 fse node 无法打开 因为无法验证开发者 macOS 无
  • 如何在 GTK 中使用剪贴板?

    我怎样才能使用Gtk剪贴板 https developer gnome org gtk3 stable gtk3 Clipboards html 读取和写入剪贴板 作为示例 请向我展示如何获取当前剪贴板内容并将其打印到控制台 我尝试使用此方
  • 从 React Native 中的 api 拦截器(组件外部)重定向到屏幕

    我正在开发一个 React Native 应用程序 该应用程序使用 JWT 令牌对请求进行身份验证 为此 我创建了 axios 请求和响应拦截器 将令牌添加到每个请求 请求拦截器 并在响应具有 401 HTTP 状态 响应拦截器 时将用户重
  • chrome webdriver 将视口设置为低于 500px?

    在我基于 selenium 的测试中 我将窗口大小设置为 400 w 719 h 以创建 400x640 的内部视口大小 我的大多数测试都是基于该尺寸 尽管有些测试使用其他尺寸 Dimension size new Dimension 40
  • C++线程栈地址范围

    C 标准是否提供了关于线程堆栈的非重叠性质的保证 如由一个线程启动 std thread 特别是 是否可以保证线程在线程堆栈的进程地址空间中拥有自己的 独占的 分配的范围 标准中哪里描述了这一点 例如 std uintptr t foo a
  • 在运行时检测 C++ 堆碎片的可移植方法?

    我正在编写一个基于 qt 的 C 应用程序 我需要能够检测内存碎片 以便检查当前系统是否能够真正承受内存负载 程序加载一个大图像 15 21 兆像素是标准 在内存中 然后对其执行一些过滤 使用稀疏矩阵 例如 我在 Windows 中遇到内存
  • 在 Google App Engine 中使用 mapreduce 的简单反例

    我对 GAE 中 MapReduce 支持的当前状态有些困惑 根据文档http code google com p appengine mapreduce http code google com p appengine mapreduce
  • Python 将 Windows 文件路径转换为变量

    给定的是一个包含 Windows 文件路径的变量 然后我必须去阅读这个文件 这里的问题是路径包含转义字符 我似乎无法摆脱它 我检查了 os path 和 pathlib 但都期望正确的文本格式 但我似乎无法构建 例如这个 请注意 给出了 f
  • 如何使用配置和编程方式优雅地关闭 Spring Boot 应用程序?

    我想优雅地关闭我的 Spring Boot 应用程序 我想知道通过 application yaml 文件配置它和以编程方式配置它有什么区别 在我的应用程序 yaml 文件中 我已从参考中添加了此内容https www baeldung c
  • 用 NA 填充两个矩阵的缺失数据

    我有两个方阵 其中都有一些缺失的数据 我想在两个矩阵中用 NA 填充缺失的数据 数据如下 first matrix t1 matrix c 1 0 1 0 0 1 1 0 1 nrow 3 ncol 3 byrow TRUE rowname
  • 使用自定义键/值在 Mongoose/Handlebars 中创建 Schema 对象

    我想创建一个表单来输入 mongo mongoose 模式中对象的自定义键和值 最终在车把视图中看到 请参阅示例以更好地解释 任何帮助都会很棒 Mongoose Mongodb 架构 var docketSchema new Schema
  • 包含一个字符串且不包含另一字符串的行的正则表达式

    我有以下正则表达式可以方便地匹配包含以下内容的所有行console log or alert 在支持 PCRE 的编辑器中打开的任何 javascript 文件中都可以使用该函数 b console log alert b 但我遇到很多文件
  • XPath 错误。节点不能在创建它的文档以外的文档中使用

    我正在尝试使用 XPath 解析 xml 文档 该脚本在 chrome 上运行良好 但出现以下错误 WrongDocumentError 节点不能在除 它是在其中创建的 有问题的代码如下 function StringToXML oStri