XML和XMLList类简单知识



XML和XMLList类简单知识

XML五个静态属性:
1、ignoreComments和ignoreProcessingInstructions属性确定分析XML对象时是否忽略注释或处理指令;
2、gnoreWhitespace属性确定在只由空白字符分隔的元素标签和内嵌表达式中是否忽略空白字符;
3、prettyIndent和prettyPrinting属性用于设置由XML类的toString()和toXMLString()方法返回的文本的格式。
XML方法:
1、用于处理XML对象属性(attribute):attribute()、attributes()
2、用于处理XML对象属性(property):hasOwnProperty()、propertyIsEnumerable()、replace()、setChildren()
3、用于处理限定名和命名空间:addNamespace()、inScopeNamespaces()、localName()、name()、namespace()、namespaceDeclarations()、removeNamespace()、setLocalName()、setName()、setNamespace()
4、用于处理和确定某些类型的XML内容:comments()、hasComplexContent()、hasSimpleContent()、nodeKind()、processingInstructions()、text()
5、用于转换为字符串和设置XML对象的格式:defaultSettings()、setSettings()、settings()、normalize()、toString()、toXMLString()
6、其它几个方法:contains()、copy()、valueOf()、length()

XMLList对象
1、用于处理 XMLList 对象的分层结构:child()、children()、descendants()、elements()、parent()
2、用于处理 XMLList 对象属性 (attribute):attribute()、attributes()
3、用于处理 XMLList 属性 (property):hasOwnProperty()、propertyIsEnumerable()
4、用于处理和确定某些类型的 XML 内容:comments()、hasComplexContent()、hasSimpleContent()、processingInstructions()、text()
5、用于转换为字符串和设置 XMLList 对象的格式:normalize()、toString()、toXMLString()
6、其它几个方法:contains()、copy()、valueOf()、length()

组合和变换 XML 对象
    1、使用prependChild()方法或appendChild()方法可在XML对象属性列表的开头或结尾添加属性,使用insertChildBefore()方法或insertChildAfter()方法在指定属性之前或之后添加属性。
var x1:XML = <p>Line 1</p>;
var x2:XML = <p>Line 2</p>;
var xml:XML = <body></body>;
xml = xml.appendChild(x1);
xml = xml.appendChild(x2);
xml= xml.prependChild(<p>Line 0</p>);
/*输出
<body>
  <p>Line 0</p>
  <p>Line 1</p>
  <p>Line 2</p>
</body>*/

  2、可以使用大括号运算符({和})在构造XML对象时按引用(从其它变量)传递数据:
var ids:Array=[121,122,123];
var names:Array=[["Murphy","Pat"],["Thibaut","Jean"],["Smith","Vijay"]];
var xml:XML=new XML("<employeeList></employeeList>");
for(var i:int=0;i<3;i++){
 var newnode:XML=new XML();
 newnode=
 <employeeid={ids[i]}>
 <last>{names[i][0]}</last>
 <first>{names[i][1]}</first>
 </employee>;
 xml=xml.appendChild(newnode);
}
trace(xml);
/*输出
<employeeList>
<employeeid="121">
<last>Murphy</last>
<first>Pat</first>
</employee>
<employeeid="122">
<last>Thibaut</last>
<first>Jean</first>
</employee>
<employeeid="123">
<last>Smith</last>
<first>Vijay</first>
</employee>
</employeeList>*/

   3、可以使用=运算符将属性(property)和属性(attribute)赋予XML对象,如下所示:
var xml:XML=
<employee>
<lastname>Smith</lastname>
</employee>;
xml.firstname="Jean";
xml.@id="239";
trace(xml);
/*输出
<employeeid="239">
<lastname>Smith</lastname>
<firstname>Jean</firstname>
</employee>*/

   4、可以使用+和+=运算符连接XMLList对象
var x1:XML=<a>test1</a>;
var x2:XML=<b>test2</b>;
var xList:XMLList=x1+x2;
xList+=<c>test3</c>;
trace(xList);
/*输出
<a>test1</a>
<b>test2</b>
<c>test3</c>*/

    5、使用点(.)运算符和后代存取器(..)运算符可以访问XML对象的子属性.
    6、可以使用child()方法导航到名称基于变量或表达式的子项
var myXML:XML=
<order>
<book>
<title>Dictionary</title>
</book>
</order>;;
var childName:String="book";
trace(myXML.child(childName).title);
/*输出
Dictionary*/

访问属性:使用@符号(属性标识符运算符)可以访问XML或XMLList对象的属性并可以一起使用*通配符和@符号来访问XML或XMLList对象的所有属性.
var employee:XML = 
 <employee id="6401" code="233">
 <lastName>Wu</lastName>
 <firstName>Erin</firstName>
 </employee>;;
trace(输出 6401

      1、可以使用attribute()或 attributes()方法访问XML或XMLList对象的特定属性或所有属性。
var employee:XML = 
 <employee id="6401" code="233">
 <lastName>Wu</lastName>
 <firstName>Erin</firstName>
 </employee>;;
trace(employee.attribute("id"));// 6401
trace(employee.attribute("*").toXMLString());
// 6401
// 233
trace(employee.attributes().toXMLString());
// 6401
// 233

   2、可以使用以下语法访问属性,其中每一个都等效于.但是,语法是首选方法:
  employee.attribute("id")
  employee["@id"]
 employee.@["id"]

   3、可以使用括号运算符"("和")"过滤具有特定元素名称或属性值的元素
var xml:XML = 
 <employeeList>
 <employee id="347">
 <lastName>Zmed</lastName>
 <firstName>Sue</firstName>
 <position>Data analyst</position>
 </employee>
 <employee id="348">
 <lastName>McGee</lastName>
 <firstName>Chuck</firstName>
 <position>Jr. data analyst</position>
 </employee>
 </employeeList>;
xml.employee.(lastName == "McGee")  //这是第二个 employee 节点。
xml.employee.(lastName == "McGee").firstName  //这是第二个 employee 节点的 firstName 属性。
xml.employee.(lastName == "McGee").@id   //这是第二个 employee 节点的 id 属性的值。
xml.employee.(@id == 347)  //第一个 employee 节点。
xml.employee.(@id == 347).lastName  //这是第一个 employee 节点的 lastName 属性。
xml.employee.(@id > 300)  //这是具有两个 employee 属性的 XMLList。
xml.employee.(position.toString().search("analyst") > -1)   //这是具有两个 position 属性的 XMLList。

使用for..in和for each..in语句
var myXML:XML = 
 <order>
 <item id='1' quantity='2'>
 <menuName>burger</menuName>
 <price>3.95</price>
 </item>
 <item id='2' quantity='2'>
 <menuName>fries</menuName>
 <price>1.45</price>
 </item>
 </order>;
    1、for..in语句用于遍历XMLList中的一组属性名称:
var total:Number = 0;
for (var pname:String in myXML.item) {
 total +=] * myXML.item.price[pname];
}
trace(total);  //10.8
    2、for each..in语句用于遍历XMLList中的属性:
  var total2:Number = 0;
  for each (var prop:XML in myXML.item)
  {
 total2 +=* prop.price;
  }
trace(total);  //10.8

将XML和XMLList对象转换为字符串,toXMLString()方法返回包含该XML对象的所有标签、属性、命名空间声明和内容的字符串。对于包含复杂内容(子元素)的XML对象,toString()方法的作用与toXMLString()方法完全相同。对于包含简单内容的XML 对象(只包含一个文本元素的对象),toString()方法只返回该元素的文本内容,如果使用 trace()方法但不指定toString()或toXMLString(),则默认情况下将使用toString()方法转换数据。
var myXML:XML = 
 <order>
 <item id='1' quantity='2'>
 <menuName>burger</menuName>
 <price>3.95</price>
 </item> 
 </order>;
trace(myXML.item.menuName.toXMLString());
trace(myXML.item.menuName.toString());

1、将字符串转换为XML对象
var x:XML = new XML("<a>test</a>");

读取外部XML文档
import flash.events.Event;
import flash.net.URLLoader;
import flash.net.URLRequest;
var externalXML:XML;
var loader:URLLoader = new URLLoader();
var request:URLRequest = new URLRequest("xmlFile.xml");
loader.load(request);
loader.addEventListener(Event.COMPLETE, onComplete);
function onComplete(event:Event):void {
 var loader:URLLoader = event.target as URLLoader;
 if (loader != null) {
  externalXML = new XML(loader.data);
  trace(externalXML.toXMLString());
 } else {
  trace("loader is not a URLLoader!");
 }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值