Javascript 解析xml错误
我制作了一个xml解析器来解析xml中的一些id(玩家id)-- 我将所有玩家ID保存在一个字符串中,然后将其按两个字符分割成一个数组 我正在解析的xml是--Javascript 解析xml错误,javascript,xml,Javascript,Xml,我制作了一个xml解析器来解析xml中的一些id(玩家id)-- 我将所有玩家ID保存在一个字符串中,然后将其按两个字符分割成一个数组 我正在解析的xml是-- 曼彻斯特联队 01 瑞安·吉格斯 02 韦恩·鲁尼 03 兹拉坦·伊布拉希莫维奇 04 大卫·德赫亚 我的解析器可以很好地处理这个xml,并提供了一个实时演示。出现问题的原因是可能存在大小不同(超过两个字符)的玩家ID。下面给出了一个例子-- 曼彻斯特联队 012 瑞安·吉格斯 02 韦恩·鲁尼 0/3 兹拉坦·伊布拉希莫维奇 0
曼彻斯特联队
01
瑞安·吉格斯
02
韦恩·鲁尼
03
兹拉坦·伊布拉希莫维奇
04
大卫·德赫亚
我的解析器可以很好地处理这个xml,并提供了一个实时演示。出现问题的原因是可能存在大小不同(超过两个字符)的玩家ID。下面给出了一个例子--
曼彻斯特联队
012
瑞安·吉格斯
02
韦恩·鲁尼
0/3
兹拉坦·伊布拉希莫维奇
04567
大卫·德赫亚
我如何处理这种情况 它应该是这样工作的 所有节点都是通过以下方法找到的:
ids=xml.find(“player\u id”)
然后您可以使用ids[i].innerHTML
访问它的内容,因为HTML也是XML
功能手柄文件选择(evt){
var file=evt.target.files[0];
如果(文件){
var reader=new FileReader();
reader.readAsText(文件“UTF-8”);
reader.onload=函数(evt){
var xml=evt.target.result;
var xmlDoc=$.parseXML(xml),
xml=$(xmlDoc),
ids=xml.find(“玩家id”)
对于(变量i=0;i”));
}否则{
$(“#xml数据”).append($(“+ids[i].innerHTML+”
”);
}
}
}
}
}
$(“#文件”).change(handleFileSelect)代码>
XML文件上载和解析文件标题
上传xml。。。
这不是已经通过调用xml.find(“player_id”).text()实现的吗?打印playerId
时的输出是什么?我在从第二个xml获取正确的播放器Id时遇到了问题。我正在寻找一个通用/独特的解决方案,它不负责玩家Id的长度。@Andreas。。。我已经在使用regex了。问题是您对多个找到的xml元素调用了.text()
,这些元素将它们连接起来。只需循环浏览元素并提取其内容:
var xml = evt.target.result;
var xmlDoc = $.parseXML(xml),
xml = $(xmlDoc),
playerId = xml.find("player_id").text(),
ids = playerId.match(/.{1,2}/g);
<?xml version="1.0" encoding="UTF-8" ?>
<player_info>
<general_info>
<team_name>Manchester United</team_name>
</general_info>
<player_segment>
<player_id>01</player_id>
<player_info>Ryan Giggs</player_info>
</player_segment>
<player_segment>
<player_id>02</player_id>
<player_info>Wayne Rooney</player_info>
</player_segment>
<player_segment>
<player_id>03</player_id>
<player_info>Zlatan Ibrahimovic</player_info>
</player_segment>
<player_segment>
<player_id>04</player_id>
<player_info>David de Gea</player_info>
</player_segment>
</player_info>
<?xml version="1.0" encoding="UTF-8" ?>
<player_info>
<general_info>
<team_name>Manchester United</team_name>
</general_info>
<player_segment>
<player_id>012</player_id>
<player_info>Ryan Giggs</player_info>
</player_segment>
<player_segment>
<player_id>02</player_id>
<player_info>Wayne Rooney</player_info>
</player_segment>
<player_segment>
<player_id>0/3</player_id>
<player_info>Zlatan Ibrahimovic</player_info>
</player_segment>
<player_segment>
<player_id>04567</player_id>
<player_info>David de Gea</player_info>
</player_segment>
</player_info>