I want to learn how to process XML with namespaces in E4X so basically here is what I want to learn, say I have some XML like this:
<rdf:RDF
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns="http://purl.org/rss/1.0/">
<rdf:item value="5"/>
<item value="10"/>
</rdf:RDF>
How could I assign <rdf:item/>
to a var called rdfItems and <item/>
to a var called regItems?
Thanks!
If you have a XML that contains multiple names but you don't care about the namespaces when getting values from the XML you can do the following....
Example XML
<ns1:Item>
<ns1:ItemType>Printed Material</ns1:ItemType>
<ns2:Book isbn="123456">
<ns2:Author>
<ns2:FirstName>James</ns2:FirstName>
<ns2:LastName>Smith</ns2:LastName>
</ns2:Author>
<ns2:Title>The Book Title</ns2:Title>
</ns2:Book>
<ns1:Item>
You could get any item regardless of namespace like this
var itemType:String = xml.*::ItemType;
var bookISBN:Number = xml.*::Book.@isbn;
var bookTitle:String = xml.*::Book.Title;
I'm not sure whether this answers the question exactly, but given your scenario, the following code retrieves both values (given the "xml" variable, referenced below, is an XML object containing the snippet of XML code you provided):
// Your "rdf" namespace
namespace rdf = "http://www.w3.org/1999/02/22-rdf-syntax-ns#";
use namespace rdf;
// Your "reg" (i.e, default) namespace
namespace reg = "http://purl.org/rss/1.0/";
use namespace reg;
private function getYourValues():void
{
var rdfitems:String = xml.rdf::item.@value;
var regitems:String = xml.reg::item.@value;
}
A distinction needs to be made between the "rdf" item and the "non-rdf" one, since their element names are otherwise identical, so the second namespace is declared to allow you to retrieve each item independently. Hope it helps!
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With