我正在使用jQuery(cordova / phonegap中的应用程序)解析xml。为此,请关注this tutorial。
一切正常,但涉及到嵌套标签。我有这个例子XML:
.....
<preguntas numero="2">
<pregunta tipo="TF" id="xxx" resta="false">
<enunciado>El cielo es azul?</enunciado>
<respuesta1>SI</respuesta1>
<respuesta2>NO</respuesta2>
<retro-pos>Eso esta bien</retro-pos>
<retro-neg>No esta bien</retro-neg>
</pregunta>
<pregunta tipo="DE" id="zzz" resta="false">
<enunciado>Desarrolla por favor:</enunciado>
<respuesta1>PUEDE</respuesta1>
<retro-pos>Gracias por participar</retro-pos>
<retro-neg>Gracias por participar una vez mas</retro-neg>
</pregunta>
</preguntas>
....
正如您所看到的,我有两个嵌套的元素,它们可以有不同数量的标签。当我在我的js中尝试这个时:
....
x=xmlhttp.response;
xmlDoc = $.parseXML( x );
$(xmlDoc).find("preguntas").each(function()
{
alert($(this).text()); // This shows contents of all "pregunta" correctly
alert($(this).find("enunciado").text()); // This shows ALL "enunciado" as one single string
}
....
我怎样才能选择一个&#34; respuesta&#34;一次,所以我可以单独获取内容?
由于
答案 0 :(得分:1)
假设你的意思是:
var x = '\n<preguntas numero="2"> '
+'\n <pregunta tipo="TF" id="xxx" resta="false"> '
+'\n <enunciado>El cielo es azul?</enunciado> '
+'\n <respuesta1>SI</respuesta1> '
+'\n <respuesta2>NO</respuesta2> '
+'\n <retro-pos>Eso esta bien</retro-pos> '
+'\n <retro-neg>No esta bien</retro-neg> '
+'\n </pregunta> '
+'\n <pregunta tipo="DE" id="zzz" resta="false"> '
+'\n <enunciado>Desarrolla por favor:</enunciado> '
+'\n <respuesta1>PUEDE</respuesta1> '
+'\n <retro-pos>Gracias por participar</retro-pos> '
+'\n <retro-neg>Gracias por participar una vez mas</retro-neg>'
+'\n </pregunta>'
+'\n</preguntas>'
;
xmlDoc = $.parseXML( x );
$(xmlDoc).find("pregunta").each(function()
{
console.log($(this).text()); // This shows contents of all "pregunta" correctly
console.log($(this).find("enunciado").text()); // This shows ALL "enunciado" as one single string
})
注意find("pregunta")
而不是find("preguntas")
。
另请注意,您需要在任何XML文档中包含单个根元素。所以,如果有其他preguntas
个元素,则需要用一个元素包围它们。