Javascript 试图解析此xml文件时未定义

Javascript 试图解析此xml文件时未定义,javascript,jquery,xml,Javascript,Jquery,Xml,因此,当涉及javascript和jquery时,我肯定是一个初学者,我目前正在尝试通过这个xml进行解析(这是一个API调用的响应)。我遇到的问题是,我不知道如何通过解析xml文件来获得一些值 <group_user> <id type="integer">2671029</id> <created_at type="datetime">2013-01-20T21:42:01+00:00</created_at> <commen

因此,当涉及javascript和jquery时,我肯定是一个初学者,我目前正在尝试通过这个xml进行解析(这是一个API调用的响应)。我遇到的问题是,我不知道如何通过解析xml文件来获得一些值

<group_user>
<id type="integer">2671029</id>
<created_at type="datetime">2013-01-20T21:42:01+00:00</created_at>
<comments_count type="integer">0</comments_count>
<moderator_at type="datetime" nil="true"/>
<user>
<id type="integer">5586131</id>
<first_name>Melora</first_name>
</user>
</group_user>
<group_user>
<id type="integer">2026289</id>
<created_at type="datetime">2012-06-08T04:22:38+00:00</created_at>
<comments_count type="integer">38</comments_count>
<moderator_at type="datetime" nil="true"/>
<user>
<id type="integer">6082517</id>
<first_name>Cindy</first_name>
</user>
但这只是给了我一个巨大的名单,所有的id和名字连在一起。我希望能够将它们视为单独的元素

var xhr = new XMLHttpRequest();
xhr.onreadystatechange = function() {
  if (xhr.readyState == 4 && xhr.status == 200) {
    var parser = new DOMParser();
    var xmlDoc = parser.parseFromString(xhr.responseText, 'text/xml');
    var name = xmlDoc.getElementsByTagName('first_name')[0].childNodes[0].nodeValue;
    var id = xmlDoc.getElementsByTagName('id')[0].childNodes[0].nodeValue;

    console.log(id, name);
  }
};
xhr.open('GET', 'sample.xml', true);
xhr.send(null);
//原始xml数据
// ================================
风险值数据=`
2671029
2013-01-20T21:42:01+00:00
0
5586131
麦罗拉
2026289
2012-06-08T04:22:38+00:00
38
6082517
辛蒂
`;
var parser=新的DOMParser();
//解析xml
var xmlDoc=parser.parseFromString(数据'text/xml');
//所有标签
var userTags=xmlDoc.querySelectorAll('user');
//用于存储用户对象的变量
var用户=[]
//各
forEach(函数(标记){
//使用对象创建
变量用户={
//在中查找第一个标记
id:tag.querySelector('id').textContent,
//在中查找第一个标记
名称:tag.querySelector('first_name').textContent
};
push(用户);
});
//console.log('users:',users);
//用户数组中的每个用户对象
users.forEach(函数(用户){
console.log(user.id、user.name);
});
var数据=`
2671029
2013-01-20T21:42:01+00:00
0
5586131
麦罗拉
2026289
2012-06-08T04:22:38+00:00
38
6082517
辛蒂
`;
var xmlDoc=$.parseXML(数据);
//var xmlDoc=new DOMParser().parseFromString(数据'text/xml');
//查找全部并对每个进行迭代
$(xmlDoc).find('user')。每个(函数(索引、标记){
//标签->。。。
//在中查找第一次出现的
var first_name=$(标记).find('first_name')[0];
//first_name=tag.querySelector('first_name');
//first_name=tag.getElementsByTagName('first_name')[0];
//在中查找第一次出现的
var id=$(标记).find('id')[0];
//id=tag.querySelector('id');
//id=tag.getElementsByTagName('id')[0]
//用户对象创建
变量用户={
id:$(id).text(),
//或
//id:id.textContent
//id:$(id)[0]。文本内容,
名称:$(名字).text()
//或
//名称:first_name.textContent
//名称:$(名字)[0]。文本内容
};
console.log('id:'+user.id);
console.log('name:'+user.name);
});
/*
xmlDoc.querySelectorAll('user').forEach(函数(标记、索引){
// ...
});
*/
/*
var users=xmlDoc.findElementsByTagName(“用户”);

对于(var index=0;indexUse
jQuery
它将通过使用
parseXml()使其变得更简单
这是否回答了您的问题?代码转储不是一个有用的答案。请解释您对原始文件所做的更改及其原因!在原始文件中,我尝试了对“sample.xml”文件的xhr“XMLHttpRequest”请求,然后使用“DOMParser”对其进行解析。这似乎可行,然后我注意到我可以将“xml”放在变量中。然后我尝试获取l从解析的变量中删除用户对象,但它不起作用。因此,我将所有xml包装在“”中,并认为已修复了它。我认为,这可能会有帮助,并发布了它。然后我查看了您的脚本,注意到您可能正在使用JQuery或其他东西,因此我尝试在JQuery中执行相同的操作。
var xhr = new XMLHttpRequest();
xhr.onreadystatechange = function() {
  if (xhr.readyState == 4 && xhr.status == 200) {
    var parser = new DOMParser();
    var xmlDoc = parser.parseFromString(xhr.responseText, 'text/xml');
    var name = xmlDoc.getElementsByTagName('first_name')[0].childNodes[0].nodeValue;
    var id = xmlDoc.getElementsByTagName('id')[0].childNodes[0].nodeValue;

    console.log(id, name);
  }
};
xhr.open('GET', 'sample.xml', true);
xhr.send(null);