【问题标题】:How to parse xml string with namespace using javascript如何使用javascript解析带有命名空间的xml字符串
【发布时间】:2013-11-01 07:41:10
【问题描述】:

我有一个 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内容 读取xml(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。我究竟做错了什么。请帮忙。期待您的解决方案。

【问题讨论】:

  • xmlDoc.getElementsByTagName('RecordID') 像对象一样返回数组 .. 打印它的值 .. 你应该使用 .. x[0].innerHTML
  • 但如果 xmlDoc.getElementsByTagName('RecordID') 返回数组,那么它至少应该给我长度。但是当我打印它的长度时,它给了我 0

标签: javascript xml-parsing


【解决方案1】:

您可以借助jQuery library 解析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

【讨论】:

  • 感谢rab的回复,但上面的xml只是实际的一小部分。我通过调用 web 服务来获取这个 xml,然后我将此响应存储在一个变量中,然后我正在执行上述所有编码来解析这个 xml
猜你喜欢
  • 2012-09-27
  • 1970-01-01
  • 2019-03-17
  • 2023-04-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-02-01
相关资源
最近更新 更多