我在用javascript解析xform时遇到了一些困难。
xml根的结构是:
<?xml version="1.0"?>
<h:html xmlns="http://www.w3.org/2002/xforms" xmlns:h="http://www.w3.org/1999/xhtml" xmlns:ex="http://www.w3.org/2001/xml-events" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:jr="http://openrosa.org/javarosa">
<h:head>
<h:title>Phonegap Survey</h:title>
</h:head>
<h:body>A ton more tags here</h:body>
</h:html>我正在使用firefox (v.12)开发并尝试部署到android上的phonegap/cordova。我正在使用jquery从odk服务器获取数据。我正在指定dataType: 'xml',它按照预期使用一个文档对象进行响应。在firefox中,我编写了一个应用程序,它向用户展示来自这个xml的数据。我正在使用构建在javascript中的函数,如:
var title = surveyXML.getElementsByTagName('h:title')[0].firstChild.data
var body = surveyXML.getElementsByTagName('h:body')[0];
var text = surveyXML.getElementsByTagName('text')我已经用这些方法编写了完整的应用程序(并且工作得很好)。但是现在我已经在eclipse上将我的文件复制到phonegap (运行cordovo 1.7.0,在android模拟器2.3上),没有任何DOM调用返回元素!!我得到的东西是:
05-31 13:21:28.686: D/CordovaLog(841): file:///android_asset/www/formcontroller.js:
line 159 : TypeError: Result of expression 'body' [undefined] is not an object.所有的电话。我已经验证了设备有正确的xml (它不是空的或任何东西)
因此,为了完成这个任务,我尝试使用jQuery导航文档对象,希望它知道一些我不知道的事情。
$(surveyXML).find('title');
$(surveyXML).find('h:title')一点也不工作。但是没有h:前缀的标记可以正常工作,如果我要搜索$(surveyXML).find('text'),它会像预期的那样返回所有text元素。
考虑到根元素是<html>,我尝试指定dataType: html (尽管文档明显标记为<?xml version="1.0"?>),并且jquery无法像预期的那样解析它。
因此,我想知道:如何解析这个XML跨平台,以便它能够在浏览器和phonegap中工作。而且,假设它不能同时使用相同的DOM操作函数,那么我如何使它至少在phonegap??中工作呢?
一如既往,任何帮助都是值得感激的。谢谢。
编辑:就目前而言,我只是手动引用元素的确切位置,比如到达body,我要去xml.firstChild.children[1]**. 因为我的截止日期还没到。我觉得应该有一种使用getElementsByTagName的方法。泰**
发布于 2012-06-14 15:48:29
这已经有两个星期没有回答了,所以我只是张贴我所做的。
现在,我只是手动引用元素的确切位置,比如到达body,我要去xml.firstChild.children1。
因此,我所做的不是搜索带有名称空间的标记,而是直接引用它们。
https://stackoverflow.com/questions/10835165
复制相似问题