2010-04-27 18 views
7

Birkaç çevrimiçi örnekte kullanılmak üzere aşağıdaki yöntemleri gördüm, ancak bir XML özet akışının ayrıştırılması için önerilen yol hakkında herhangi bir belge bulamadı.XML beslemesini ActionScript 3.0 ile birden çok ad alanlarıyla ayrıştırmanın önerilen yolu nedir?

Yöntem 1:

protected function xmlResponseHandler(event:ResultEvent):void 
{ 
    var atom:Namespace = new Namespace("http://www.w3.org/2005/Atom"); 
    var microsoftData:Namespace = new Namespace("http://schemas.microsoft.com/ado/2007/08/dataservices"); 
    var microsoftMetadata:Namespace = new Namespace("http://schemas.microsoft.com/ado/2007/08/dataservices/metadata"); 

    var ac:ArrayCollection = new ArrayCollection(); 
    var keyValuePairs:KeyValuePair; 
    var propertyList:XMLList = (event.result as XML)..atom::entry.atom::content.microsoftMetadata::properties; 

    for each (var properties:XML in propertyList) 
    { 
     keyValuePairs = new KeyValuePair(properties.microsoftData::FieldLocation, properties.microsoftData::Locationid); 
     ac.addItem(keyValuePairs);  
    } 

    cb.dataProvider = ac; 
} 

Yöntem 2:

protected function xmlResponseHandler(event:ResultEvent):void 
{ 
    namespace atom = "http://www.w3.org/2005/Atom"; 
    namespace d = "http://schemas.microsoft.com/ado/2007/08/dataservices"; 
    namespace m = "http://schemas.microsoft.com/ado/2007/08/dataservices/metadata"; 

    use namespace d; 
    use namespace m; 
    use namespace atom; 

    var ac:ArrayCollection = new ArrayCollection(); 
    var keyValuePairs:KeyValuePair; 
    var propertyList:XMLList = (event.result as XML)..entry.content.properties; 

    for each (var properties:XML in propertyList) 
    { 
     keyValuePairs = new KeyValuePair(properties.FieldLocation, properties.Locationid); 
     ac.addItem(keyValuePairs);  
    } 

    cb.dataProvider = ac; 
} 

Yöntem 3:

protected function xmlResponseHandler(event:ResultEvent):void 
{ 
    var ac:ArrayCollection = new ArrayCollection(); 
    var keyValuePairs:KeyValuePair; 
    var propertyList:XMLList = (event.result as XML)..*::entry.*::content.*::properties; 

    for each (var properties:XML in propertyList) 
    { 
     keyValuePairs = new KeyValuePair(properties.*::FieldLocation, properties.*::Locationid); 
     ac.addItem(keyValuePairs);  
    } 

    cb.dataProvider = ac; 
} 

Örnek XML besleme:

<?xml version="1.0" encoding="iso-8859-1" standalone="yes"?> 
<feed xml:base="http://www.test.com/Test/my.svc/" xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices" xmlns:m="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata" xmlns="http://www.w3.org/2005/Atom"> 
    <title type="text">Test_Locations</title> 
    <id>http://www.test.com/test/my.svc/Test_Locations</id> 
    <updated>2010-04-27T20:41:23Z</updated> 
    <link rel="self" title="Test_Locations" href="Test_Locations" /> 
    <entry> 
     <id>1</id> 
     <title type="text"></title> 
     <updated>2010-04-27T20:41:23Z</updated> 
     <author> 
      <name /> 
     </author> 
     <link rel="edit" title="Test_Locations" href="http://www.test.com/id=1" /> 
     <category term="MySQLModel.Test_Locations" scheme="http://schemas.microsoft.com/ado/2007/08/dataservices/scheme" /> 
     <content type="application/xml"> 
      <m:properties> 
       <d:FieldLocation>Test Location</d:FieldLocation> 
       <d:Locationid>test0129</d:Locationid> 
      </m:properties> 
     </content> 
    </entry> 
    <entry> 
     <id>2</id> 
     <title type="text"></title> 
     <updated>2010-04-27T20:41:23Z</updated> 
     <author> 
      <name /> 
     </author> 
     <link rel="edit" title="Test_Locations" href="http://www.test.com/id=2" /> 
     <category term="MySQLModel.Test_Locations" scheme="http://schemas.microsoft.com/ado/2007/08/dataservices/scheme" /> 
     <content type="application/xml"> 
      <m:properties> 
       <d:FieldLocation>Yet Another Test Location</d:FieldLocation> 
       <d:Locationid>test25</d:Locationid> 
      </m:properties> 
     </content> 
    </entry> 
</feed> 

cevap

1

Üçüncüsü, onları yok sayarak ad alanlarına sahip olma amacını tamamen yener. Yani bu bir hayır.

İlk iki yöntemden, bir kaç ekstra tuş vuruşuyla sonuçlanabilse de, ilk olarak her bir tanımlayıcının hangi ad alanının başvurduğunu belirttiği gibi tercih ederim.

Ayrıca, ikinci yöntemin benim için yeni olduğunu eklemeliyim.

İlgili konular