所以我肯定是初学者,当涉及到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>
对于所有用户(不是group_users)我想存储/ consolelog所有id和所有名字。
现在我正在做:
var name = $(xml).find("first_name").text();
console.log(name);
var id = $(xml).find("id").text();
console.log(id);
但这只是给了我一个连接在一起的所有id和名字的巨大列表。我希望能够将它们视为独立的元素。
答案 0 :(得分:0)
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);
// raw xml data
// ================================
var data = `
<data>
<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>
</group_user>
</data>
`;
var parser = new DOMParser();
// parse xml
var xmlDoc = parser.parseFromString(data, 'text/xml');
// all <user> tags
var userTags = xmlDoc.querySelectorAll('user');
// variable to store user objects
var users = []
// each <user>
userTags.forEach(function(tag) {
// use object creation
var user = {
// find first <id> tag within <user>
id: tag.querySelector('id').textContent,
// find first <first_name> tag within <user>
name: tag.querySelector('first_name').textContent
};
users.push(user);
});
// console.log('users:', users);
// each user object in users array
users.forEach(function(user) {
console.log(user.id, user.name);
});
&#13;
答案 1 :(得分:0)
var data =`&#xD;&#xA;&lt;数据&GT;&#的xD;&#XA; &LT; GROUP_USER&GT;&#的xD;&#XA; &lt; id type =“integer”&gt; 2671029&lt; / id&gt;&#xD;&#xA; &lt; created_at type =“datetime”&gt; 2013-01-20T21:42:01 + 00:00&lt; / created_at&gt;&#xD;&#xA; &lt; comments_count type =“integer”&gt; 0&lt; / comments_count&gt;&#xD;&#xA; &lt; moderator_at type =“datetime”nil =“true”/&gt;&#xD;&#xA; &lt;使用者&GT;&#的xD;&#XA; &lt; id type =“integer”&gt; 5586131&lt; / id&gt;&#xD;&#xA; &LT;如first_name&GT; Melora&LT; / first_name的&GT;&#的xD;&#XA; &LT; /使用者&gt;&#的xD;&#XA; &LT; / GROUP_USER&GT;&#的xD;&#XA;&#的xD;&#XA; &LT; GROUP_USER&GT;&#的xD;&#XA; &lt; id type =“integer”&gt; 2026289&lt; / id&gt;&#xD;&#xA; &lt; created_at type =“datetime”&gt; 2012-06-08T04:22:38 + 00:00&lt; / created_at&gt;&#xD;&#xA; &lt; comments_count type =“integer”&gt; 38&lt; / comments_count&gt;&#xD;&#xA; &lt; moderator_at type =“datetime”nil =“true”/&gt;&#xD;&#xA; &lt;使用者&GT;&#的xD;&#XA; &lt; id type =“integer”&gt; 6082517&lt; / id&gt;&#xD;&#xA; &LT;如first_name&GT;辛迪&LT; / first_name的&GT;&#的xD;&#XA; &LT; /使用者&gt;&#的xD;&#XA; &lt; / group_user&gt;&#xD;&#xA;&lt; / data&gt;&#xD;&#xA;`;&#xD;&#xA;&#xD;&#xA; var xmlDoc = $ .parseXML (data);&#xD;&#xA; // var xmlDoc = new DOMParser()。parseFromString(data,'text / xml');&#xD;&#xA;&#xD;&#xA; / / find all并遍历每个&lt; user&gt; &#xD;&#xA; $(xmlDoc).find('user')。each(function(index,tag){&#xD;&#xA; // tag - &gt;&lt; user&gt; ... &lt; / user&gt;&#xD;&#xA;&#xD;&#xA; //在&lt; user&gt;&#xD;&#xA; var first_name = $(tag)中找到第一次出现&lt; first_name&gt; ).find('first_name')[0];&#xD;&#xA; // first_name = tag.querySelector('first_name');&#xD;&#xA; // first_name = tag.getElementsByTagName(' first_name')[0];&#xD;&#xA;&#xD;&#xA; //在&lt; user&gt;&#xD;&#xA;&#id&=中找到第一次出现的&lt; id&gt; var id = $ (tag).find('id')[0];&#xD;&#xA; // id = tag.querySelector('id');&#xD;&#xA; // id = tag.getElementsByTagName ('id')[0]&#xD;&#xA;&#xD;&#xA; //用户对象创建&#xD;&#xA; var user = {&#xD;&#xA; id: $(id).text(),&#xD;&#xA; //或&#xD;&#xA; // id:id.textContent&#xD;&#xA; // id:$(id)[ 0] .textContent,&#xD;&#xA; name:$(first_name).text()&#xD;&#xA; //或&#xD;&#xA; // name:first_name.textContent&#xD ;&#xA; //名称:$(first_name)[0] .textContent&#xD;&#xA;};&#xD;&#xA;&#xD;&#xA; con sole.log('id:'+ user.id);&#xD;&#xA; console.log('name:'+ user.name);&#xD;&#xA;});&#xD;&#xA;&#xD;&#xA; / *&#xD;&#xA ; xmlDoc.querySelectorAll('user')。forEach(function(tag,index){&#xD;&#xA; // ...&#xD;&#xA;});&#xD;&#xA ; * /&#xD;&#xA;&#xD;&#xA; / *&#xD;&#xA; var users = xmlDoc.findElementsByTagName('user');&#xD;&#xA; for (var index = 0; index&lt; users.length; index ++){&#xD;&#xA; var tag = users [index];&#xD;&#xA; // ...&#xD;&#xA;}&#xD;&#xA; * /
&#xD;&#xA; &lt; script src =”https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js“&gt;&lt; / script&gt; 代码>
&#的xD;&#XA;