如何使用JavaScript或jQuery读取XML标签值?以获取fn节点值为例
解决jQuery解析XML获取标签值的问题
看了你的代码和XML结构,我发现几个需要调整的地方,帮你修正后就能正确获取
问题分析
- 错误的文本获取方法:你用了
$(this).find('fn').value(),但jQuery对象没有value()方法——获取标签内的纯文本内容应该用text();只有表单元素(比如input)才用val()来取值。 - AJAX异步执行的问题:你在AJAX请求外面写的
console.log(fn)会先于AJAX回调执行,此时fn还是初始的空字符串,所以必须把输出逻辑放在success回调内部。 - XML层级确认:你的XML里
<form1>嵌套在<xfa:data>下,不过$(xml).find('form1')已经能正确定位到该元素,这部分没问题。
修正后的代码
var fn = ""; $.ajax({ type: "GET", url: "xmldata.xml", dataType: "xml", success: function(xml) { // 遍历找到的form1元素 $(xml).find('form1').each(function(){ // 用text()获取fn标签的文本内容 fn = $(this).find('fn').text(); console.log(fn); // 这里输出能拿到正确的"John" }); // 补充:如果XML里只有一个form1元素,不用each更简洁 // fn = $(xml).find('form1 fn').text(); // console.log(fn); }, error: function(xhr, status, error) { // 加上错误处理,方便排查XML加载失败的问题 console.error("XML加载失败:", error); } }); // 这里的console.log(fn)会先执行,此时fn还是空值,不要在这里输出
你的XML结构(供参考)
<?xml version="1.0" encoding="UTF-8"?> <afData> <afUnboundData> <data /> </afUnboundData> <afBoundData> <xdp:xdp xmlns:xdp="http://ns.adobe.com/xdp/" timeStamp="2018-05-22T15:17:16Z" uuid="3cd001ed-7c9a-46f7-af5f-3b9e32b11578"> <xfa:datasets xmlns:xfa="http://www.xfa.org/schema/xfa-data/1.0/"> <xfa:data> <form1> <fn>John</fn> <ln>Doe</ln> <about>My name is John Doe</about> </form1> </xfa:data> </xfa:datasets> </xdp:xdp> </afBoundData> <afSubmissionInfo> <lastFocusItem>guide[0].guide1[0].guideRootPanel[0].panel1[0]</lastFocusItem> <computedMetaInfo /> </afSubmissionInfo> </afData>
内容的提问来源于stack exchange,提问作者kwaxe
相关产品推荐
相关产品推荐

