精通XMLDocument

-、XMLDocument;

有必要说明一下,XMLDocumentflash xml 包内建的,XMLXMLList是顶级类。

另:XMLDocument 继承XMLNode,它可以使用父类的所有方法和属性;

附:XMLDocument的另类创建方法:

var xd:XMLDocument=new XMLDocument();

var str:String="<data pro='a'>b</data><data pro='c'>d</data>";

xd.parseXML(str);

特别强调:parseXML()参数不但可以是String,还可以是XML

另:XMLDocument没有toXMLString()方法; 

 

一) 访问节点名

trace(xd.fistChild.firstChild.nodeName);//a该节点必须是元素节点。

三)访问节点值:(假定没有根节点);

trace(xd.firstChild.firstChild.nodeValue);//b 其实nodeValue可以省略;该节点必须是文本节点。

 

四)访问节点属性;

trace(xd.firstChild.attributes.pro);//a;

<data pro="a">b</data><data pro="c">d</data>

有了根节点,xd没变,但是xd.firstChild变了;

attributes:属性,注意这里是复数;

 

五)加载和解析外部XML文档;

//省略加载部分代码;

function co(e:Event):void{

var xd:XMLDocument=new XMLDocument();

xd.ignoreWhite=true;//忽略空白;

xd.parseXML(e.target.data);

       trace(xd);

}

 

六)XMLDocument的高级创建方法;

var xd:XMLDocument=new XMLDocument();

var rootNode:XMLNode=xd.createElement("root");//创建根节点;

var nodeA:XMLNode=xd.createElement("name");//创建子节点;

var nodeB:XMLNode=xd.createElement("name");//创建子节点;

var valA:XMLNode=xd.createTextNode("张三");//创建节点值;

var valB:XMLNode=xd.createTextNode("李四");//创建节点值;

nodeA.appendChild(valA);

nodeB.appendChild(valB);

rootNode.appendChild(nodeA);

rootNode.appendChild(nodeB);

xd.appendChild(rootNode);

trace(xd);

//输出;<root><name>张三</name><name>李四</name></root>

//createElement:创建节点名,用于创建XMLNodeType.ELEMENT_NODE节点名。

//createTextNode:创建节点值,用于创建XMLNodeType.TEXT_NODE节点值;

 

七)注意事项:

<node>//这是一个节点,有节点名(nodeName)没有

//节点值(nodeValue)  nodeType=XMLNodeType.ELEMENT_NODE(或者是1

我也是节点  //特别需要注意了,这也是一个节点,有节点值没有节点名。

//nodeType=XMLNodeType.TEXT_NODE(或者是3

</node>

 

八)其它相关的属性和方法;

docTypeDecl : Object = null

指定有关 XML 文档的 DOCTYPE 声明的信息。

idMap : Object

一个对象,其中包含分配了 id 属性的 XML 的节点。

xmlDecl : Object = null

一个字符串,指定有关文档的 XML 声明的信息。

 

二、XMLNode

由于XMLDocument继承于XMLNode,因此也把XMLNode的相关属性和方法在此说明一下:

一)属性:

1、 访问节点:

子级或父级节点:firstChild   lastChild   parentChild

    同级节点: nextSibling   previousSibling

2、 节点相关:

nodeName:如果含有命名空间,nodeName包含了命名空间名;

localName:不包含命名空间名;

nodeValue:只能访问文本节点,并且可以缺省。

nodeType:一个 nodeType 常数值,对于 XML 元素为 XMLNodeType.ELEMENT_NODE或数字1),对于文本节点为 XMLNodeType.TEXT_NODE或数字3

 

3、 其它:

attributes : Object

一个对象,其中包含指定的 XMLNode 实例的所有属性

(注意:attributes访问到的是某一个节点的所有属性,而不是所有节点的所有属性)

childNodes : Array

[read-only] 指定的 XMLNode 对象子级的数组。

namespaceURI : String

[read-only] 如果 XML 节点具有前缀,则 namespaceURI 为该前缀 (URI) xmlns 声明的值,通常称为命名空间 URI

prefix : String

[read-only] XML 节点名称的前缀部分。即命名空间的前辍

 

二)方法:

appendChild(node:XMLNode):void

将指定的节点追加到 XML 对象的子级列表中。

cloneNode(deep:Boolean):XMLNode

构造并返回一个类型、名称、值和属性与指定的 XML 对象均相同的新 XML 节点。

说明:如果参数deep true,则克隆所有子节点,否则不克隆子节点。另,通过克隆出来的节点与原始节点失去所有关联,不再用firstChild nextSibling的属性。

hasChildNodes():Boolean

指示指定的 XMLNode 对象是否具有子节点。

insertBefore(node:XMLNode, before:XMLNode):void

将新的子节点插入到 XML 对象的子级列表中,且在 beforeNode 节点之前。

removeNode():void

从指定 XML 对象的父级中删除该对象。

比如:myXML.firstChild.firstChild.removeNode();//表示把myXML.firstChild.firstChild删除。

d.parseXML(str);

 

三)访问节点值:(假定没有根节点);

trace(xd.firstChild.firstChild.nodeValue);//b 其实nodeValue可以省略;

 

四)访问节点属性;

trace(xd.firstChild.attributes.pro);//a;

<data pro="a">b</data><data pro="c">d</data>

有了根节点,xd没变,但是xd.firstChild变了;

attributes:属性,注意这里是复数;

 

五)加载和解析外部XML文档;

//省略加载部分代码;

function co(e:Event):void{

var xd:XMLDocument=new XMLDocument();

xd.ignoreWhite=true;//忽略空白;

xd.parseXML(e.target.data);

       trace(xd);

}

 

六)XMLDocument的高级创建方法;

var xd:XMLDocument=new XMLDocument();

var rootNode:XMLNode=xd.createElement("root");//创建根节点;

var nodeA:XMLNode=xd.createElement("name");//创建子节点;

var nodeB:XMLNode=xd.createElement("name");//创建子节点;

var valA:XMLNode=xd.createTextNode("张三");//创建节点值;

var valB:XMLNode=xd.createTextNode("李四");//创建节点值;

nodeA.appendChild(valA);

nodeB.appendChild(valB);

rootNode.appendChild(nodeA);

rootNode.appendChild(nodeB);

xd.appendChild(rootNode);

trace(xd);

//输出;<root><name>张三</name><name>李四</name></root>

//createElement:创建节点名,用于创建XMLNodeType.ELEMENT_NODE节点名。

//createTextNode:创建节点值,用于创建XMLNodeType.TEXT_NODE节点值;

 

七)注意事项:

<node>//这是一个节点,有节点名(nodeName)没有

//节点值(nodeValue)  nodeType=XMLNodeType.ELEMENT_NODE(或者是1

我也是节点  //特别需要注意了,这也是一个节点,有节点值没有节点名。

//nodeType=XMLNodeType.TEXT_NODE(或者是3

</node>

 

八)其它相关的属性和方法;

docTypeDecl : Object = null

指定有关 XML 文档的 DOCTYPE 声明的信息。

idMap : Object

一个对象,其中包含分配了 id 属性的 XML 的节点。

xmlDecl : Object = null

一个字符串,指定有关文档的 XML 声明的信息。

你可能感兴趣的:(xml,object,String,null,文档,attributes)