Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Windows8.1Cordova:在XML上使用jquery的find方法_Jquery_Xml_Windows_Cordova - Fatal编程技术网

Windows8.1Cordova:在XML上使用jquery的find方法

Windows8.1Cordova:在XML上使用jquery的find方法,jquery,xml,windows,cordova,Jquery,Xml,Windows,Cordova,我正在开发一个cordova 4.3.1应用程序,它必须在解压xlsx和pptx文档后修改从它们读取的xml代码。为了做到这一点,我们使用jquery的$.parseXML方法,然后在xml中执行一些更改。为了找到需要更改xml的标记,我们使用jquery的find方法。在iOS上一切正常。但是,当我们在windows 8.1上测试它时,有时在某些pptx的xml xlsx上调用find时,它会返回一个空的jquery结果,但我们使用find的频率比在pptx上要低得多 我已经查看了查找不起作用

我正在开发一个cordova 4.3.1应用程序,它必须在解压xlsx和pptx文档后修改从它们读取的xml代码。为了做到这一点,我们使用jquery的$.parseXML方法,然后在xml中执行一些更改。为了找到需要更改xml的标记,我们使用jquery的find方法。在iOS上一切正常。但是,当我们在windows 8.1上测试它时,有时在某些pptx的xml xlsx上调用find时,它会返回一个空的jquery结果,但我们使用find的频率比在pptx上要低得多

我已经查看了查找不起作用的对象,它看起来与在iOS上几乎相同。大多数对象的内容都是相同的,一些元素只出现在iOS上,如baseURI、currentScript和multiple只出现在alinkcolor、all、ATTRIBUTE_NODE等窗口上。我注意到一件可疑的事情是,xml对象的location属性在windows上包含对方法或属性访问的意外调用,而在iOS上则为null

此外,由于xml是由Excel和Powerpoint生成的,我相信它是有效的

有人知道为什么这种行为会发生在windows上吗?我的搜索主要发现了一些问题,人们使用find方法时没有使用$.parseXML,这里的情况并非如此

小代码摘录 在xlsx上,并适用于以下两种情况:

初始化:this.xmlData=$.parseXMLthis.zip.filesheetZipPath.asText

工作查找:var cells=$this.xmlData.findc

在pptx上,仅适用于iOS:

这两种方法的初始化都适用:this.currentSlideXML=$.parseXMLthis.zipContent.fileslideZipPath.asText

不工作查找:var段落=$this.currentSlideXML.findp; 考虑到上面这一行,当我在其上放置断点并尝试位于一定数量的子节点(甚至sld)下的不同选择器时,我总是得到一个空的搜索结果,即长度为0的jquery对象

考虑到xml的大小,我无法将其复制到这里,但是如果您创建一个pptx或xlsx文件,保存它,将其重命名为.zip,然后解压,您可以找到一个具有类似结构的文件

简言之
当在使用jquery的parseXML解析的XML上使用find方法时,windows上的find方法出现了奇怪的行为,我想知道我的代码中是否遗漏了一个明显的错误,或者是否有关于为什么在windows上而不是在iOS上发生这种情况的解释。

发现问题在于XML名称空间。对于pptx文件,解析xml时考虑了节点名中标记的命名空间。因此,当jquery尝试匹配我的选择器时,它没有找到它应该找到的标记,因为选择器与nodeName不完全相同,例如:我使用的是findp,但节点名为a:p,所以我需要使用finda\\\:p

所以最后,它是在iOS上工作,而不是在windows上,因为这两个平台使用不同的xml解析器