我对这个域是陌生的,我将获得此xml文档的最后一个子域,但无法获得该域,任何人都可以解释为什么我的代码对我而言似乎正确,但是却不知道为什么它没有得到姓氏的消息,那么还有什么其他可能的方法可以实现,我只想从此味精中获取talk 123
xml文件
<msg category="short">
<person1>
<time>
r
<message>Djssjs</message>
</time>
</person1>
<person2>
<time>
r
<message>1234fdg</message>
</time>
</person2>
<person1>
<time>
r
<message> talk 123</message>
</time>
</person1>
</msg>
javascript
function myFunction(xml) {
var xmlDoc = xml.responseXML;
var x = xmlDoc.getElementsByTagName("msg")[0].lastChild;
var m = x.childNodes[2];
document.getElementById("demo").innerHTML = m.innerHTML;
}
答案 0 :(得分:1)
我不知道xml
的类型是什么...我假设一个包含字符串的对象。
如果我是正确的,则需要使用DOMParser对其进行解析。
然后,我们得到(按顺序):
<msg>
标签,<person1>
,<message>
标签的innerHTML。
var xml = {
responseXML: '<msg category="short"> <person1> <time> r <message>Djssjs</message> </time> </person1> <person2> <time> r <message>1234fdg</message> </time> </person2> <person1> <time> r <message> talk 123</message> </time> </person1> </msg>'
};
function myFunction(xml) {
// Get the response from the object.
var xmlDoc = xml.responseXML;
//console.log(xmlDoc);
// Parse the string to HTML
var parser = new DOMParser();
var xmlParsed = parser.parseFromString(xmlDoc, "application/xml");
//console.log(xmlParsed);
// Get the <msg> tage
var msgTag = xmlParsed.getElementsByTagName("msg")[0];
//console.log(msgTag.tagName);
// Get the last child, <person1>
var personLast = msgTag.lastElementChild;
//console.log(personLast);
// Get the <msg> innerHTML
var msgLast = personLast.getElementsByTagName("message")[0].innerHTML;
//console.log(msgLast);
// Display in document
document.getElementById("demo").innerHTML = msgLast;
}
myFunction(xml);
#demo{
border:1px solid black;
height:6em;
}
<div id="demo">Function result should be here.</div>
中未注释控制台日志
答案 1 :(得分:0)
正如评论中指出的那样,这里可能存在多个问题。不确定XML文档,但javascript会将nextline字符视为最后一个子元素。因此,最后一个孩子将是文字。您可以通过在控制台上登录x进行测试。这应该根据此处的xml修复当前功能。
function myFunction(xml) {
var xmlDoc = xml.responseXML;
var x = xmlDoc.getElementsByTagName("msg")[0].childNodes[childNodes.length-2];
var m = x.childNodes[1].childnodes[1];
document.getElementById("demo").innerHTML = m.innerHTML;
}