Javascript 解析xml错误

Javascript 解析xml错误,javascript,xml,Javascript,Xml,我制作了一个xml解析器来解析xml中的一些id(玩家id)-- 我将所有玩家ID保存在一个字符串中,然后将其按两个字符分割成一个数组 我正在解析的xml是-- 曼彻斯特联队 01 瑞安·吉格斯 02 韦恩·鲁尼 03 兹拉坦·伊布拉希莫维奇 04 大卫·德赫亚 我的解析器可以很好地处理这个xml,并提供了一个实时演示。出现问题的原因是可能存在大小不同(超过两个字符)的玩家ID。下面给出了一个例子-- 曼彻斯特联队 012 瑞安·吉格斯 02 韦恩·鲁尼 0/3 兹拉坦·伊布拉希莫维奇 0

我制作了一个xml解析器来解析xml中的一些id(玩家id)--

我将所有玩家ID保存在一个字符串中,然后将其按两个字符分割成一个数组

我正在解析的xml是--


曼彻斯特联队
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>