您需要为要访问的所有命名空间创建命名空间对象,并为您的 E4X 属性添加适当的命名空间前缀。这是一个如何读取值和迭代属性的示例:
var xmlString:String =
'<x:xmpmeta x:xmptk="Adobe XMP Core 5.0.0-ac001" xmlns:x="adobe:ns:meta/">\
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">\
<rdf:Description rdf:about="" xmp:rating="4" xmp:title="random" xmp:land="stuff" \
xmlns:xmp="http://ns.adobe.com/xap/1.0/" xmlns:dc="http://purl.org/dc/elements/1.1/"/>\
</rdf:RDF>\
</x:xmpmeta>';
var rdf:Namespace = new Namespace('http://www.w3.org/1999/02/22-rdf-syntax-ns#');
var xmp:Namespace = new Namespace('http://ns.adobe.com/xap/1.0/');
var xml:XML = new XML(xmlString);
for each (var description:XML in xml.rdf::RDF.rdf::Description) {
var rating:String = description.@xmp::rating;
var title:String = description.@xmp::title;
var land:String = description.@xmp::land;
trace(rating, title, land);
// iterate over all the attributes
for each (var attr:XML in description.attributes()) {
trace(attr.name(), attr.localName());
}
}