2011-06-22 8 views
0

私は私がのがすべてcom.abc.db.ConfigInfo行を横断したいと、このコードを持っており、それらのいずれかがcfgId141として警告(cfgName)更新jQuery Xml解析ここで何が問題ですか?

が含まれている場合

alert(xml); 
         $(xml).find('list com\\.abc\\.db\\.ConfigInfo').each(function() 
         { 
          alert("enter the dragon"); 
          if($(this).find('cfgId').text()=="141") 
          alert($(this).find('cfgName').text()); 
         }); 

マイXML

<list> 
<com.abc.db.ConfigInfo> 
<cfgId>83</cfgId> 
<cfgName>test</cfgName> 
</com.abc.db.ConfigInfo> 
<com.abc.db.ConfigInfo> 
<cfgId>102</cfgId> 
<cfgName>cfgname1</cfgName> 
</com.abc.db.ConfigInfo> 
    </list> 
+0

これで問題は何ですか? – Vivek

+0

@Vivek: 'each'ループ自体の中に入っていません – Ricky

答えて

1

コードは正しく表示されます。しかし、xmlの例ではcfgId141とはありません。そして、これはあなたが任意のアラートを取得しない正当な理由です...

+0

@Ovidio l .:少なくとも私のループに入るはずです。更新された質問の部分を参照してください。 – Ricky

+0

'xml'変数は何ですか? [jQuery.parseXML](http://api.jquery.com/jQuery.parseXML/)を使用していますか? – ovi

+0

l .:サーバー側の応答から取得します。var xml = client.responseText; – Ricky

1

ルートノードからのトラバース開始..

newXml = $.parseXML(xml)// parse your xml 
$(newXml).find('list com.abc.db.ConfigInfo').each(function(){        
if($(this).find('cfgId').text()=="141")        
alert($(this).find('cfgName').text());       
}); 
+0

@Vivek:うまくいきません – Ricky

+0

うーん、これはうまくいくはずです。 – Vivek

+0

Vivek:いいえjsエラー、私はIEでしようとしています(何かjsエラーがある場合、左下のアイコンを表示します) – Ricky

1

シズル(jQueryの.findとその友人のために使用するライブラリー)は、「クラスabcとノードcomdbConfigInfo」としてあなた"com.abc.db.ConfigInfo"を解釈します。

ドットをエスケープすると("list com\\.abc\\.db\\.ConfigInfo"、これはJS文字列で、バックスラッシュをエスケープする必要があるため)、試してみることもできますが、可能であればドットなしでタグ名を選択することをおすすめします。アンダースコアはうまくいくはずです。

+0

私はあなたの方法を使用しましたが、私は警告(XML)を得ることができます。 – Ricky

+1

jQueryがルート要素として(@ Vivekが述べたように)取るので、 'list'ビットも取り除く必要があります。それは私のために働く、参照してください:http://jsfiddle.net/yMQSZ/ – Gijs