如何使用javascript解析带有命名空间的xml字符串

时间:2013-11-01 07:41:10

标签: javascript xml-parsing

我有一个xml:

<ns1:GetStudentDataCollection xmlns:ns1="http://tempuri.org/">
<ns1:GetStudentData>
<ns1:RecordID>1</ns1:RecordID>
<ns1:StudentID>1</ns1:StudentID>
<ns1:StudentName>Arzon</ns1:StudentName>
<ns1:Class>2</ns1:Class>
<ns1:FathersName>Peter John</ns1:FathersName>
<ns1:MothersName>Maria John</ns1:MothersName>
</ns1:GetStudentData>
</ns1:GetStudentDataCollection>

这个xml在一个变量中,我将其转换为xmlDoc:

var xmlDoc=StringtoXML(xmlString);

//获取xmlDoc后我试图读取xml内容     的ReadXml(xmlDoc中);

//converts string to xml
function StringtoXML(text){
    if (window.ActiveXObject){
      var doc=new ActiveXObject('Microsoft.XMLDOM');
      doc.async='false';
      doc.loadXML(text);
    } else {
      var parser=new DOMParser();
      var doc=parser.parseFromString(text,'text/xml');
    }
    return doc;
}

在Readxml()函数中,我这样做:

function Readxml(xmlDoc) {

x = xmlDoc.getElementsByTagName('RecordID');
console.log(x.length);
alert("Value of x is : " + x);
}

但是,当我运行上述事情时,我没有得到x的任何值。所以这意味着我无法解析这个xml。我究竟做错了什么。请帮忙。期待您的解决方案。

1 个答案:

答案 0 :(得分:0)

您可以在jQuery库的帮助下解析xml。

var xml = ['<ns1:GetStudentDataCollection xmlns:ns1="http://tempuri.org/">',
'<ns1:GetStudentData>',
'<ns1:RecordID>1</ns1:RecordID>',
'<ns1:StudentID>1</ns1:StudentID>',
'<ns1:StudentName>Arzon</ns1:StudentName>',
'<ns1:Class>2</ns1:Class>',
'<ns1:FathersName>Peter John</ns1:FathersName>',
'<ns1:MothersName>Maria John</ns1:MothersName>',
'</ns1:GetStudentData>',
'</ns1:GetStudentDataCollection>'].join('');

console.log( $( xml ).find('ns1\\:RecordID').text() )

打印1