2012-05-12 3 views
0

Я пытаюсь быть в состоянии загрузить все данные XML из документа XML и терпела неудачу всю ночь на ней даже исследованияЗагрузка XML в Flex AS3

Вот отрывок из XML Я пытаюсь загрузить :

<?xml version="1.0"?> 
<feed xmlns="http://www.w3.org/2005/Atom" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> 
    <id>urn:uuid:5762c9e8-4e65-3b0c-83b3-7874683f3dbe</id> 
    <link href="/v1/espi_third_party_batch_feed" rel="self"> 
    </link> 
    <title type="text">Opower ESPI Third Party Batch Feed v1</title> 
    <updated>2012-04-03T22:55:36.364Z</updated> 

    <entry> 
    <id>urn:uuid:baa6a50a-1306-3680-80a4-51d228db8f25</id> 
    <link href="/v1/User/3560606/UsagePoint/6403112/MeterReading/1/IntervalBlock/1" rel="self"> 
    </link> 
    <content type="xml"> 
     <IntervalBlock xmlns="http://naesb.org/espi"> 
     <interval> 
      <duration>3600</duration> 
      <start>1299128400</start> 
     </interval> 
     <IntervalReading> 
      <timePeriod> 
      <duration>3600</duration> 
      <start>1299128400</start> 
      </timePeriod> 
      <value>436</value> 
     </IntervalReading> 
     </IntervalBlock> 
    </content> 
    </entry> 
</feed> 

Вот фрагмент кода AS3 я озадачил на в XmlLoader:

public function returnArray():Array 
    {   
     var ATOM:Namespace = new Namespace("http://www.w3.org/2005/Atom"); 
     var NAESB:Namespace = new Namespace("http://naesb.org/espi"); 
     trace("entered returnArray"); 
     var tempArray:Array = new Array(); 
     var x:Number = 0; 
     var y:Number = 0; 
     var entries = this.docXML.ATOM::entry; 
     trace(entries.length());    //returns 4 and supposed to 
     trace(entries[3].content.length());  //returns 0 supposed to return 1 
     trace(this.docXML.ATOM::entry[3].content.NAESB::interval.length()); //returns 0`enter code here` 
+0

Прошу прощения за то, что вы не справились с этой задачей. Можете ли вы рассказать нам, почему/как вы терпите неудачу? В чем проблема? Вы получаете ошибку времени выполнения? Или что-то другое? Я пропустил часть, в которой вы делили код, загружающий XML? – JeffryHouser

+0

Нет ошибок, просто не позволяя мне получить доступ к вложенным xmlns в теге IntervalBlock, чтобы я мог прочитать время/потребление энергии внутри этого тега, и поскольку я пытаюсь сделать это для приложения, которое any1 может использовать I не удаляйте только теги xmlns, так как эти данные предоставляются в стандартном формате энергетическими компаниями по всей стране. –

+0

. Ваша строка темы утверждает, что проблема заключается в загрузке данных; но похоже, что ваша проблема заключается в доступе к данным после их загрузки. Это верно? Вы говорите: «Это не позволяет вам получить доступ к вложенным xmlns? Что не так? Ваш XML не имеет каких-либо специальных элементов с именами, но похоже, что вы пытаетесь получить к ним доступ, как если бы они находились в пространстве имен. – JeffryHouser

ответ

0

во-первых, вы должны смотреть на the documentation for e4x. Во-вторых: что вы точно пытаетесь сделать?

Последняя строка, которую вы могли бы изменить на this.docXML.ATOM::entry.content..NAESB::interval.length(), но я не уверен, что вы действительно пытаетесь выйти из XML-документа. Получение длины узла не очень полезно для получения фактических данных из XML-файла.

+0

Я пытаюсь получить доступ к данным внутри тега записи, используя класс пространства имен. Я смог получить доступ к классу записей, но, похоже, не получил класс пространства имен, чтобы дать мне доступ ко всему внутри класса ввода. Но если я должен был отслеживать (записи [3]), он читает весь документ xml. Моя проблема в том, что поскольку эти данные являются информацией, предоставленной электрической компанией, я не могу изменить их данные, если я хочу, чтобы другие использовали мои , поэтому я пытаюсь получить доступ к тегу интервала, чтобы использовать данные там, но s ince inested внутри другого xmlns, я не могу получить доступ –

+0

У меня есть ощущение, что он имеет дело с id urn: uuid, который делает его уникальным –

0

Ответ на это благодаря frankhermes и www.Flextras.com за пособничество моего обучения в целях продолжения обхода есть необходимость добавить еще пространство имен АТОМА в XML, чтобы сохранить обходе

var entries = this.docXML.ATOM::entry; 
trace(entries[3].content.length()); 

должен быть

var entries = this.docXML.ATOM::entry; 
trace(entries[3].ATOM::content.length()); 
Смежные вопросы