如何从XML树中获取值?
我想获得的legalName
,并从这个链接的值phyCity
如何从XML树中获取值?
而且我想使用JavaScript,我下面写道:
$('.DotNum').click(function (e) {
var dotNum = $('#DotNum').val().replace(/\-|\s/g, '');
var url = "https://mobile.fmcsa.dot.gov/qc/services/carriers/"+ dotNum +".xml?webKey=dadd9237da5c0390c9511ef871258e1703abdb36";
var xhr = new XMLHttpRequest();
xhr.onreadystatechange = function() {
if (xhr.readyState == XMLHttpRequest.DONE) {
alert(xhr.responseText);
var xmlDoc = this.responseXML;
var legalName = xmlDoc.nodeValue("response").ChildNode("content").ChildNode("carrier").attribute("legalName");
$('#CompName').val(legalName);
$('#CompCity').val(phyCity);
$('#CompState').val(state);
$('#CompAddress').val(address);
}
}
xhr.open('GET', url, true);
xhr.send(null);
});
我不知道如何得到的值legalName
所以我尝试了很多不同的东西...
我该怎么办var legalName = xmlDoc.brabrabar
xmlDoc.nodeValue()函数将返回字符串。
取而代之的是您可以使用,xmlDoc.getElementsByTagName(“载体”)
这将返回节点的数组。如果你确定你只有一个节点,那么你可以直接访问[0]索引,否则循环并使用getAttribute('')获取属性值;
不工作.... –
嘿,好吧,你用它作为.nodeValue(“响应”),它将返回字符串。 因此,请尝试像xmlDoc.getElementsByTagName('carrier')[0] .getAttribute('legalName') –
那样直接访问xml节点请添加一些关于此代码如何帮助OP的解释。这将有助于提供未来观众可以从中学习的答案。请参阅[这个元问题及其答案](http://meta.stackoverflow.com/q/256359/215552)了解更多信息。 –
您可以使用.getElementsByTagName()
得到你所寻求的元素:
var carrier = xmlDoc.getElementsByTagName('carrier')[0];
var legalName = carrier.getAttribute('legalName');
var phyCity = carrier.getAttribute('phyCity');
var state = carrier.getAttribute('phyState');
工作例如:
function queryDot(dotNum) {
var url = "https://mobile.fmcsa.dot.gov/qc/services/carriers/" + dotNum + ".xml?webKey=dadd9237da5c0390c9511ef871258e1703abdb36";
var xhr = new XMLHttpRequest();
xhr.onreadystatechange = function() {
if (xhr.readyState == XMLHttpRequest.DONE) {
var xmlDoc = this.responseXML;
var carrier = xmlDoc.getElementsByTagName('carrier')[0];
var legalName = carrier.getAttribute('legalName');
var phyCity = carrier.getAttribute('phyCity');
var state = carrier.getAttribute('phyState');
console.log(legalName, phyCity, state);
}
}
xhr.open('GET', url, true);
xhr.send(null);
}
queryDot(44110);
既然你似乎是使用jQuery,你可以也做这个jQuery的方式:
function queryDot(dotNum) {
$.get("https://mobile.fmcsa.dot.gov/qc/services/carriers/" + dotNum + ".xml?webKey=dadd9237da5c0390c9511ef871258e1703abdb36")
.then(function(result) {
var carrier = $(result).find('carrier');
var legalName = carrier.attr('legalName');
var phyCity = carrier.attr('phyCity');
var state = carrier.attr('phyState');
console.log(legalName, phyCity, state);
});
}
queryDot(44110);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
什么是预期的'VAR legalName = xmlDoc.nodeValue( “应答”)结果ChildNode( “内容”)ChildNode( “载体”)属性( “legalName”)。。。; '? ' – guest271314
@ guest271314不能正常工作..它为空 –
请包括您想与之交互的服务返回的XML示例。 –