XML操作

lu_cy發表於2011-04-19

      對XML內容進行操作時,查詢XML節點是很重要的一個操作。在ActionScript 3.0中,提供了兩種查詢XML節點的方式:通過屬性進行查詢和通過節點內容進行能夠查詢。

      使用屬性進行查詢時,可以直接指定查詢的內容的表示式。如果節點符合表示式的判斷,那麼在返回值內加入節點。具體使用方法如下程式碼所示。

var xml:String="<root>"

                    +"<Element>"

                    +"<Element1 version='9'>Flash CS3</Element1>"

                    +"<Element1 version='8'>Flash 8</Element1>"

                    +"<Element1 version='7'>Flash 2004MX</Element1>"

                    +"</Element>"

                    +"</root>";

var flexXML:XML=new XML(xml);

trace(flexXML.Element.Element1.(attribute('version')>7));

在上面程式碼中,flexXML.Element.Element1.(attribute('version')>7通過指定查詢version屬性大於7的節點,並輸出。上面程式碼輸出結果如下所示。

<Element1 version='9'>Flash CS3</Element1>

       <Element1 version='8'>Flash 8</Element1>

在進行查詢時可以使用“==”、“>”、“<”、“>=”和“<=”等操作符進行對屬性的判斷。XML中,還提供一個hasOwnProperty判斷節點中是否存在查詢使用屬性。查詢表示式支援多條件布林運算。使用方式如下程式碼所示。

var xml:String="<root>"

                    +"<Element>"

                    +"<Element1 version='9'>Flash CS3</Element1>"

                    +"<Element1 version='8' company='geostar'>Flash 8</Element1>"

                    +"<Element1 version='7'>Flash 2004MX</Element1>"

                    +"</Element>"

                    +"</root>";

var flexXML:XML=new XML(xml);

trace(flexXML.Element.Element1.( hasOwnProperty(“company”)&&@version>7));

//輸出的結果為:<Element1 version='8' company='geostar'>Flash 8</Element1>

通過節點內容查詢節點的方式與通過屬性查詢節點的方式完全一致。同樣也是使用表示式的方式對節點內容進行判斷查詢。具體使用方式如下程式碼所示。

var flexXML:XML=<root>
         <Element>
          <Element1>
           <Version>
            9
           </Version>
          </Element1>
          <Element1>
           <Version>
            8
           </Version>
          </Element1>
         </Element>
        </root>
    trace(flexXML.Element.Element1.(Version>7));   

執行結果為:<Element1>
                               <Version>9</Version>
                            </Element1>
                            <Element1>
                                <Version>8</Version>
                            </Element1>

 

xml直接獲取某一特定標籤名的所有節點,如下示例:

var flexXML:XML=<root>
         <Element>
          <Element1>
           <Version>
            9
           </Version>
          </Element1>
          <Element1>
           <Version>
            8
           </Version>
          </Element1>
         </Element>
        </root>
    trace(flexXML..Element1);
    trace(flexXML..Version);   

執行結果為:

<Element1>
           <Version>9</Version>
       </Element1>
       <Element1>
           <Version>8</Version>
       </Element1>


       <Version>9</Version>
       <Version>8</Version>

對xml高階操作部分:

(1) 改變xml的標籤名:

var xml:XML=new XML("<標籤名></標籤名>");
      //改變xml標籤名
      xml.setName("標籤名1");

(2)往xml中新增屬性

var xml:XML=new XML("<標籤名></標籤名>");
       //新增屬性
       xml.@["屬性名"]="屬性值";

(3)設定xml中文字

 var xml:XML=new XML("<標籤名></標籤名>");

 xml.setChildren("文字內容");

 (4)在xml中新增子節點

 var xml:XML=new XML("<標籤名></標籤名>");
       var xml2:XML=new XML("<標籤名2></標籤名2>");

 var xml3:XML=new XML("<標籤名3></標籤名3>");

 //子節點後面追加子節點

 xml.appendChild(xml2);
       //子節點前面追加新增子節點
       //xml.prependChild(xml3);

相關文章