奇怪的是将xml加载到as3中,根元素必须格式正确吗?

时间:2013-07-18 01:15:46

标签: php xml actionscript-3 codeigniter

首先,我尝试将xml加载到组合框中,并且顺利进行(多次成功)。然后我解决了我的应用程序的另一部分。在一些新部件解决之后,我再次尝试xml-combobox部件,但它给出了不同的结果。错误看起来像这样

TypeError: Error #1088: The markup in the document following the root element must be well-formed.
at flash1_fla::MainTimeline/LoadXMLprovALL()
at flash.events::EventDispatcher/dispatchEventFunction()
at flash.events::EventDispatcher/dispatchEvent()
at flash.net::URLLoader/onComplete()

对于AS3:

//some code above here that not related with codes below ...
this.addEventListener(Event.ENTER_FRAME,setCB_Prov);
urlXMLprovALL.addEventListener(Event.COMPLETE,LoadXMLprovALL);

function setCB_Prov(e:Event):void{          
urlRequest.url = "http://localhost/stat.me/index.php/main/get_dataProvider_provinsi";
urlXMLprovALL.load(urlRequest);
}

function LoadXMLprovALL(e:Event):void{
this.removeEventListener(Event.ENTER_FRAME, setCB_Prov);
XMLprovALL = new XML(e.target.data);

for(var i:int=0; i<XMLprovALL.provinsi.length(); i++){      
    namaProv[i] = XMLprovALL..nama_provinsi[i];             
    idProv[i] = XMLprovALL..id_provinsi[i];     
    cbProvSkrng.addItem({label: namaProv[i], data:idProv[i]});
} 
cbProvSkrng.addEventListener(Event.CHANGE, cbProvSkrngHandler);
}

function cbProvSkrngHandler(e:Event):void{
idProvSkrng = ComboBox(e.target).selectedItem.data; 
}

对于PHP:

<?php $xml = "<?xml version=\"1.0\" encoding=\"utf-8\" ?>\n"; 
  $xml .= "<data_provinsi>\n";
  if (is_array($hasil)) {
    foreach ($hasil as $baris) {
    $xml .= "\t<provinsi>\n";
    //$i = 0;
    $xml .= "\t\t <nama_provinsi>" . $baris->nama_provinsi . "</nama_provinsi>\n";
    $xml .= "\t\t <id_provinsi>" . $baris->Id_provinsi . "</id_provinsi>\n";
    //$i++;
    $xml .= "\t</provinsi>\n";
   }
   $xml .= "</data_provinsi>\n";
  } else {
    echo "kosong";
  }
 echo $xml; ?>

和xml如果我在浏览器中尝试它:

<?xml version="1.0" encoding="utf-8" ?>
<data_provinsi>
<provinsi>
     <nama_provinsi>Aceh</nama_provinsi>
     <id_provinsi>11</id_provinsi>
</provinsi>
<provinsi>
     <nama_provinsi>Sumatera Utara</nama_provinsi>
     <id_provinsi>12</id_provinsi>
</provinsi>
<provinsi>
     <nama_provinsi>Sumatera Barat</nama_provinsi>
     <id_provinsi>13</id_provinsi>
</provinsi>
<provinsi>
     <nama_provinsi>Riau</nama_provinsi>
     <id_provinsi>14</id_provinsi>
</provinsi>
<provinsi>
     <nama_provinsi>Jambi</nama_provinsi>
     <id_provinsi>15</id_provinsi>
</provinsi>
<provinsi>
     <nama_provinsi>Sumatera Selatan</nama_provinsi>
     <id_provinsi>16</id_provinsi>
</provinsi>
<provinsi>
     <nama_provinsi>Bengkulu</nama_provinsi>
     <id_provinsi>17</id_provinsi>
</provinsi>
<provinsi>
     <nama_provinsi>Lampung</nama_provinsi>
     <id_provinsi>18</id_provinsi>
</provinsi>
<provinsi>
     <nama_provinsi>Kepulauan Bangka Belitung</nama_provinsi>
     <id_provinsi>19</id_provinsi>
</provinsi>
<provinsi>
     <nama_provinsi>Kepulauan Riau</nama_provinsi>
     <id_provinsi>21</id_provinsi>
</provinsi>
<provinsi>
     <nama_provinsi>Jakarta</nama_provinsi>
     <id_provinsi>31</id_provinsi>
</provinsi>
<provinsi>
     <nama_provinsi>Jawa Barat</nama_provinsi>
     <id_provinsi>32</id_provinsi>
</provinsi>
<provinsi>
     <nama_provinsi>Jawa Tengah</nama_provinsi>
     <id_provinsi>33</id_provinsi>
</provinsi>
<provinsi>
     <nama_provinsi>Yogyakarta</nama_provinsi>
     <id_provinsi>34</id_provinsi>
</provinsi>
<provinsi>
     <nama_provinsi>Jawa Timur</nama_provinsi>
     <id_provinsi>35</id_provinsi>
</provinsi>
<provinsi>
     <nama_provinsi>Banten</nama_provinsi>
     <id_provinsi>36</id_provinsi>
</provinsi>
<provinsi>
     <nama_provinsi>Bali</nama_provinsi>
     <id_provinsi>51</id_provinsi>
</provinsi>
<provinsi>
     <nama_provinsi>Nusa Tenggara Barat</nama_provinsi>
     <id_provinsi>52</id_provinsi>
</provinsi>
<provinsi>
     <nama_provinsi>Nusa Tenggara Timur</nama_provinsi>
     <id_provinsi>53</id_provinsi>
</provinsi>
<provinsi>
     <nama_provinsi>Kalimantan Barat</nama_provinsi>
     <id_provinsi>61</id_provinsi>
</provinsi>
<provinsi>
     <nama_provinsi>Kalimantan Tengah</nama_provinsi>
     <id_provinsi>62</id_provinsi>
</provinsi>
<provinsi>
     <nama_provinsi>Kalimantan Selatan</nama_provinsi>
     <id_provinsi>63</id_provinsi>
</provinsi>
<provinsi>
     <nama_provinsi>Kalimantan Timur</nama_provinsi>
     <id_provinsi>64</id_provinsi>
</provinsi>
<provinsi>
     <nama_provinsi>Sulawesi Utara</nama_provinsi>
     <id_provinsi>71</id_provinsi>
</provinsi>
<provinsi>
     <nama_provinsi>Sulawesi Tengah</nama_provinsi>
     <id_provinsi>72</id_provinsi>
</provinsi>
<provinsi>
     <nama_provinsi>Sulawesi Selatan</nama_provinsi>
     <id_provinsi>73</id_provinsi>
</provinsi>
<provinsi>
     <nama_provinsi>Sulawesi Tenggara</nama_provinsi>
     <id_provinsi>74</id_provinsi>
</provinsi>
<provinsi>
     <nama_provinsi>Gorontalo</nama_provinsi>
     <id_provinsi>75</id_provinsi>
</provinsi>
<provinsi>
     <nama_provinsi>Sulawesi Barat</nama_provinsi>
     <id_provinsi>76</id_provinsi>
</provinsi>
<provinsi>
     <nama_provinsi>Maluku</nama_provinsi>
     <id_provinsi>81</id_provinsi>
</provinsi>
<provinsi>
     <nama_provinsi>Maluku Utara</nama_provinsi>
     <id_provinsi>82</id_provinsi>
</provinsi>
<provinsi>
     <nama_provinsi>Papua Barat</nama_provinsi>
     <id_provinsi>91</id_provinsi>
</provinsi>
<provinsi>
     <nama_provinsi>Papua </nama_provinsi>
     <id_provinsi>94</id_provinsi>
</provinsi>
</data_provinsi>

上面的代码有问题吗?我怎么能解决这个错误?

[新]更新:

  
    
      

我尝试修复PHP部分中的某些部分,并删除一些不包含在xml构造部分中的代码。然后我没有再次得到同样的错误(有时我会忘记之前已经改变过的部分)。基于此,我认为flash播放器沙箱没有问题。谢谢你的建议

    
  

1 个答案:

答案 0 :(得分:0)

怀疑是这个问题。

尝试将结果存储在XMLList

中,而不是使用XML类 当您尝试将字符串转换为XML并且字符串本身是无效的XML时,会出现

TypeError: Error #1088: The markup in the document following the root element must be well-formed.

要使XML有效,它应该包含一个根节点,该根节点可能包含也可能不包含其他节点或仅包含文本。

而不是

XMLprovALL = new XML(e.target.data);

使用

var XMLprovALL:XMLList = new XMLList(e.target.data);