2012-05-12 51 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

没有错误,它只是不允许我访问标签IntervalBlock中的嵌套xmlns,以便我可以读取嵌套在该标签内的时间/能量使用情况,并且因为我正在尝试为any1可以使用的应用程序由于这些数据是由美国能源公司提供的标准格式,因此不能删除xmlns标签 –

+0

您的主题行声称此问题是加载数据;但它听起来像你的问题是加载后访问数据。那是对的吗?你说“它不允许你访问嵌套的xmlns?什么不是?你的XML没有任何特殊的命名空间项目,但它看起来像你试图访问它们,就好像它们在命名空间中一样。 – JeffryHouser

回答

0

首先,你应该看看the documentation for e4x。其次:你究竟想要做什么?

最后一行你可以更改为this.docXML.ATOM::entry.content..NAESB::interval.length()但我不确定你真的想从xml文档中找到什么。获取节点的长度对于从XML文件中获取实际数据并不是很有用。

+0

我想实际获得对条目标签内部数据的访问权限;使用名称空间类我能够访问条目类,但似乎无法获得名称空间类,以便让我访问条目类中的任何内容。但是,如果我要跟踪(条目[3]);它读取整个XML文档。我的问题是,因为这些数据是电气公司提供的信息,我不能改变他们的数据,如果我想让别人使用我的应用程序,所以我试图访问间隔标记来使用那里的数据,但s因为它嵌套在另一个xmlns内我似乎无法获得 –

+0

我有一种感觉,它必须处理id urn:uuid,这使得它独一无二 –

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());