0

xformxmlをjavascriptで解析するのに問題があります。

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にデプロイしようとしています。jqueryajaxを使用してodkサーバーからデータを取得しています。私は指定dataType: 'xml'していて、期待どおりにドキュメントオブジェクトで応答しています。Firefoxで、このxmlのデータをユーザーに表示するアプリを作成しました。私は次のような組み込みのJavaScriptDOM関数を使用しています。

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は期待どおりに解析できません。

だから私は疑問に思っています:ブラウザとphonegapの両方で機能するように、このXMLクロスプラットフォームをどのように解析できますか?そして、同じDOM操作関数を使用して両方で機能できないと仮定すると、少なくともphonegapで機能させるにはどうすればよいですか?

いつものようにどんな助けもありがたいです。ありがとうございました。

編集:今のところ、私は自分が行く体に到達するような要素の正確な位置を手動で参照していxml.firstChild.children[1]ます。締め切りが迫っているので。getElementsByTagNameをまだ使用する方法があるはずだと思います。ty。

4

1 に答える 1

0

これは2週間未回答だったので、私がしたことを投稿しています。

今のところ、私は体に到達するような要素の正確な位置を手動で参照しています。xml.firstChild.children[1]に行きます。

したがって、私が行ったのは、名前空間を持つタグを検索するのではなく、それらを直接参照することだけでした。

于 2012-06-14T15:48:29.410 に答える