如何从XML树中获取值?

时间:2017-03-17 18:59:36

标签: javascript html asp.net xml

我想获得legalNamephyCity

的值

来自此链接:check

我想使用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

2 个答案:

答案 0 :(得分:1)

您可以使用.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>

答案 1 :(得分:0)

xmlDoc.nodeValue()函数将返回字符串。

而不是你可以使用,xmlDoc.getElementsByTagName(“carrier”)

这将返回一个节点数组。如果您确定只有一个节点,则可以直接访问[0]索引,否则循环并使用getAttribute('')获取属性值;