0

XML ドキュメントからすべての XML データをロードできるようにしようとしていますが、調査しても一晩中失敗しています。

読み込もうとしている 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>

XmlLoader で困惑している AS3 コードのスニペットを次に示します。

    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`
4

2 に答える 2

0

まず、e4x のドキュメントをご覧ください。第二に、あなたは正確に何をしようとしていますか?

変更できる最後の行ですがthis.docXML.ATOM::entry.content..NAESB::interval.length()、xml ドキュメントから実際に何を取得しようとしているのかわかりません。ノードの長さを取得しても、xml ファイルから実際のデータを取得するのにはあまり役立ちません。

于 2012-05-12T18:48:39.467 に答える
0

これに対する答えは、私の学習を支援してくれた frankhermes と www.Flextras.com です。トラバースを続けるには、ATOM の別の名前空間を xml に追加してトラバースを続ける必要があります

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

する必要があります

var entries = this.docXML.ATOM::entry;
trace(entries[3].ATOM::content.length()); 
于 2012-05-13T02:01:38.023 に答える