在jquery中处理带有命名空间的XML数据

2020-05-22 17:08:39易采站长站整理

但不幸的是,很多服务返回的数据仍然是XML格式的。
jquery对于xml这种数据的处理是内置支持的,这一点没有任何问题。但前提是返回的数据没有带任何命名空间。例如下面这份数据

<?xml version=”1.0″ encoding=”utf-8″ ?>
<data>
<Employee id=”1″ firstName=”ares” lastName=”chen”></Employee>
<Employee id=”1″ firstName=”ares” lastName=”chen”></Employee>
<Employee id=”1″ firstName=”ares” lastName=”chen”></Employee>
<Employee id=”1″ firstName=”ares” lastName=”chen”></Employee>
<Employee id=”1″ firstName=”ares” lastName=”chen”></Employee>
<Employee id=”1″ firstName=”ares” lastName=”chen”></Employee>
<Employee id=”1″ firstName=”ares” lastName=”chen”></Employee>
<Employee id=”1″ firstName=”ares” lastName=”chen”></Employee>
</data>

要处理这样的数据,jquery代码大致如下

var div = $(“#placeholder”);
// 处理不带命名空间的xml
$.get(“data.xml”, null, function (data) {
var employees = $(“Employee”, data); //找到所有的Employee节点
var ul = $(“<ul />”);
employees.each(function () {
$(“<li />”).text($(this).attr(“firstName”) + ” ” + $(this).attr(“lastName”)).appendTo(ul);// 将每一行数据构造一个新的li标签,并且将其插入到ul中
});
ul.appendTo(div);
});

但如果我们的XML数据带有命名空间,则上述代码就会无效。原因是因为jquery默认处理不了命名空间

<?xml version=”1.0″ encoding=”utf-8″ ?>
<data xmlns:d=”http://tech.xizhang.com”>
<d:Employee id=”1″ firstName=”bill” lastName=”gates”></d:Employee>
<d:Employee id=”1″ firstName=”bill” lastName=”gates”></d:Employee>
<d:Employee id=”1″ firstName=”bill” lastName=”gates”></d:Employee>
<d:Employee id=”1″ firstName=”bill” lastName=”gates”></d:Employee>
<d:Employee id=”1″ firstName=”bill” lastName=”gates”></d:Employee>
<d:Employee id=”1″ firstName=”bill” lastName=”gates”></d:Employee>
<d:Employee id=”1″ firstName=”bill” lastName=”gates”></d:Employee>
<d:Employee id=”1″ firstName=”bill” lastName=”gates”></d:Employee>