2010-04-27 15 views
7

Tôi đã thấy các phương pháp sau được sử dụng trong một số ví dụ trực tuyến, nhưng chưa tìm thấy bất kỳ tài liệu nào về cách phân tích cú pháp nguồn cấp dữ liệu XML được khuyến nghị.Cách phân tích cú pháp nguồn cấp dữ liệu XML được khuyến nghị với nhiều không gian tên với ActionScript 3.0 là gì?

Phương pháp 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; 
} 

Cách 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; 
} 

Phương pháp 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; 
} 

mẫu thức ăn chăn nuôi XML:

<?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> 

Trả lời

1

Thứ ba hoàn toàn đánh bại mục đích của việc có không gian tên bằng cách bỏ qua chúng. Vì vậy, đó là một không.

Trong số hai phương pháp đầu tiên, mặc dù nó có thể dẫn đến một vài lần nhấn phím bổ sung, tôi muốn cái đầu tiên vì nó nêu rõ không gian tên nào mà mỗi mã định danh đề cập đến.

Tôi cũng phải thêm rằng phương pháp thứ hai là mới đối với tôi - chưa bắt đầu.

Các vấn đề liên quan