这是我的XML
<?xml version="1.0" encoding="UTF-8"?>
<prj:Flow xmlns:prj="url1" xmlns:com="url2" xmlns:ns2="url3" xmlns:con="url4" xmlns:ns0="url5" xmlns:ns1="url6" xmlns:ns3="url7">
<prj:str>
<prj:layout comp="abcd">
<prj:prop>
<prj:property name="Hardik" value="5000"/>
<prj:property name="Vipul" value="YES"/>
</prj:prop>
</prj:layout>
</prj:str>
</prj:Flow>
这就是我试过的
$(document).ready(function() {
$.ajax({
type: "GET",
url: 'sample.xml',
dataType: "xml",
success: function(xml) {
$(xml).find('prj\\:prop').each(function() {
var $entry = $(this);
var pic = $entry.find('prj\\:property').each(function(){
var names = $(this).attr('name');
alert(names);
})
})
},
error: function(xhr, status, error) {
if (xhr.status != 404) {alert(error);} else {alert("404 xml not found");}
}
});
})
我无法从xml命名空间中检索属性。我也尝试了.find('[nodename=prj:prop]');
这样做的风格,但仍然没有结果。我在这里遗漏了一些非常基本的东西吗?
答案 0 :(得分:0)
我认为问题在于您的Ajax代码,而不是XML解析代码。这对我来说很好:
<html>
<head>
<script src="https://code.jquery.com/jquery-1.12.1.min.js" integrity="sha256-I1nTg78tSrZev3kjvfdM5A5Ak/blglGzlaZANLPDl3I=" crossorigin="anonymous"></script>
<script>
$(function() {
var xml = '<?xml version="1.0" encoding="UTF-8"?> <prj:Flow xmlns:prj="url1" xmlns:com="url2" xmlns:ns2="url3" xmlns:con="url4" xmlns:ns0="url5" xmlns:ns1="url6" xmlns:ns3="url7"> <prj:str> <prj:layout comp="abcd"> <prj:prop> <prj:property name="Hardik" value="5000"/> <prj:property name="Vipul" value="YES"/> </prj:prop> </prj:layout> </prj:str> </prj:Flow>';
$(xml).find('prj\\:prop').each(function() {
console.log("A");
var $entry = $(this);
var pic = $entry.find('prj\\:property').each(function() {
console.log("B");
var names = $(this).attr('name');
console.log(names);
});
});
});
</script>
</head>
<body>
hi
</body>
</html>
因此,我会确保您的xml
变量具有您认为的变量。