如何从xml获取值?

时间:2014-06-20 14:56:08

标签: javascript xml

我有以下xml:

<Order>
  <Moulding>
    <imgsrc>imgsrc</imgsrc>
    <width>1.13</width>
  </Moulding>
</Order>

我尝试通过以下方式获得成型宽度:

moulding_width = doc.getElementsByTagName('Moulding')[0].childNodes[1].nodeValue;

然而,这是行不通的。如何获得成型宽度?

2 个答案:

答案 0 :(得分:0)

假设

var xml = "<Order><Moulding><imgsrc>imgsrc</imgsrc><width>1.13</width></Moulding></Order>";

关注,XML parsing of a variable string in JavaScript你可以使用(这需要jQuery)

var order = $.parseXML(xml).getElementsByTagName("Order")[0]
var moulding = order.getElementsByTagName("Moulding")[0]
var width = moulding.getElementsByTagName("width")[0];
var moulding_width = parseFloat(width.textContent);

或者,使用您的节点访问方法

var moulding_width = parseFloat($.parseXML(xml).getElementsByTagName("Order")[0].childNodes[0].childNodes[1].textContent);

请注意,getElementsByTagName会为您提供所需元素的列表,而不是其内容,这就是为什么与您的方法相比还有额外的childNodes

如果你没有使用jQuery,你可能会考虑(见http://www.w3schools.com/dom/dom_parser.asp

function parseXML(text) {
  if (window.DOMParser)  {
    parser=new DOMParser();
    return parser.parseFromString(text,"text/xml");
  } else { // code for IE
    xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
    xmlDoc.async=false;
    xmlDoc.loadXML(text);
    return xmlDoc;
  }
}

var moulding_width = parseFloat(parseXML(xml).getElementsByTagName("Order")[0].childNodes[0].childNodes[1].textContent);

答案 1 :(得分:0)

我认为这应该有效:

var data = "<Order><Moulding><imgsrc>imgsrc</imgsrc><width>1.13</width></Moulding></Order>";
var xml = $.parseXML(data),
$xml = $( xml ),
$test = $xml.find('width');

console.log($test.text());

我检查过这个。您也可以在此处查看:http://jsfiddle.net/5ecR6/

在您运行小提琴时检查控制台,您将找到值为1.13的日志