JavaScript操作Xml
如果你做Web开发,那就难免要与JavaScript打交道。而JavaScript作为一种浏览器脚本,以其强大的功能及方便的操作,已经赢得了全部浏览器的支持。在前面我介绍了如何使用Sql操作Xml和使用C#操作Xml,这里我就简单的介绍一下使用JavaScript来操作Xml数据。
学习任何知识的最佳途径莫过于实践。这里我们从一个简单的例子出发,来讲解如何使用JavaScript来操作Xml格式数据的。由于我的水平有限,不正确或者不合理的地方还请指正。
1、创建文档。
大家都知道,Xml是一种基于对象的语言,也就是说,在JavaScript中,很多东西也都是面向对象的。可以使用new关键字创建一个对象。当然,创建一个Xml文档也不例外。var xmlDoc = new ActiveXObject("Msxml2.DOMDocument.3.0");
2、添加节点。
其实,使用JavaScript操作Xml,和使用C#操作Xml有着几乎相同的方法。我们可以使用C#中一样的方法appendChild()方法来实现添加XML节点。说到这里你该问如何创建Xml节点了,其实还是跟C#相同的方法 var root = xmlDoc.createElement("root"); 将这个root节点添加到xmlDoc这个文档中就很简单了: xmlDoc.appendChild(root); 现在,xmlDoc中就有了一个根节点了。需要注意的是,一个Xml文档只能有一个根节点。其它的节点个数不限。
3、得到节点。
查询节点的方法就很多了。可以使用一个一个节点遍历,也可以使用selectSingleNode()方法或者selectNodes()方法。而得到一个文档根节点的方法则是通过属性documentElement来得到。那么得到xmlDoc的根节点就是 var rootNode = xmlDoc.documentElement;现在我们向root节点中添加一个book节点:var book = xmlDoc.createElement("book"); root.appendChild(bookNode); 那么得到book节点就是:var bookNode = root.selectSingleNode("book");或者var bookNode = root.selectNodes("book")[0]; 或者var bookNode = root.firstNode;你可以使用任何一种方法来得到自己想要的节点。
4、删除节点。
其实这个功能使用量是非常少的。你可以使用removeChild()方法来操作。这里不再详细说明。
5、未提到的内容。
对Xml的操作还远不止这些。还有对属性的增删改查的操作, 对节点值的操作。详细的说明请参照下面的这张表,这个表格来源与MSDN:
Specifies if asynchronous download is permitted. Read/write. |
|
Contains the list of attributes for this node. Read-only. |
|
Returns the base name for the name qualified with the namespace. Read-only. |
|
Contains a node list containing the children nodes. Read-only. |
|
Specifies the data type for this node. Read/write. |
|
Returns the definition of the node in the document type definition (DTD) or schema. Read-only. |
|
Contains the document type node that specifies the DTD for this document. Read-only. |
|
Contains the root element of the document. Read/write. |
|
Contains the first child of this node. Read-only. |
|
Contains the IXMLDOMImplementation object for the document. Read-only. |
|
Returns the last child node. Read-only. |
|
Returns the Uniform Resource Identifier (URI) for the namespace. Read-only. |
|
Contains the next sibling of the node in the parent's child list. Read-only. |
|
Returns the qualified name for attribute, document type, element, entity, or notation nodes. Returns a fixed string for all other node types. Read-only. |
|
Specifies the XML Document Object Model (DOM) node type, which determines valid values and whether the node can have child nodes. Read-only. |
|
Contains this node's value expressed in its defined data type. Read/write. |
|
Returns the node type in string form. Read-only. |
|
Contains the text associated with the node. Read/write. |
|
Specifies the event handler for the ondataavailable event. Write-only. |
|
Specifies the event handler to be called when the readyState property changes. Write-only. |
|
Specifies the event handler for the ontransformnode event. Write-only. |
|
Returns the root of the document that contains this node. Read-only. |
|
Contains the parent node. Read-only. |
|
Indicates the parsed status of the node and child nodes. Read-only. |
|
Returns an IXMLDOMParseError object that contains information about the last parsing error. Read-only. |
|
Returns the namespace prefix. Read-only. |
|
Specifies the default white space handling. Read/write. |
|
Contains the previous sibling of the node in the parent's child list. Read-only. |
|
Indicates the current state of the XML document. Read-only. |
|
Indicates whether external definitions (resolvable namespaces, DTD external subsets, and external entity references) are to be resolved at parse time, independent of validation. Read/write. |
|
Indicates whether the node (usually an attribute) is explicitly specified or derived from a default value in the DTD or schema. Read-only. |
|
Represents the text content of the node or the concatenated text representing the node and its descendants. Read/write. |
|
Returns the URL for the last loaded XML document. Read-only. |
|
Indicates whether the parser should validate this document. Read/write. |
|
Contains the XML representation of the node and all its descendants. Read-only. |
Aborts an asynchronous download in progress. |
|
Appends a new child as the last child of this node. |
|
Clones a new node. |
|
Creates a new attribute with the specified name. |
|
Creates a CDATA section node that contains the supplied data. |
|
Creates a comment node that contains the supplied data. |
|
Creates an empty IXMLDOMDocumentFragment object. |
|
Creates an element node using the specified name. |
|
Creates a new EntityReference object. |
|
Creates a node using the supplied type, name, and namespace. |
|
Creates a processing instruction node that contains the supplied target and data. |
|
Creates a text node that contains the supplied data. |
|
Returns a collection of elements that have the specified name. |
|
Provides a fast way to determine whether a node has children. |
|
Inserts a child node to the left of the specified node or at the end of the list. |
|
Loads an XML document from the specified location. |
|
Loads an XML document using the supplied string. |
|
Returns the node that matches the ID attribute. |
|
Removes the specified child node from the list of children and returns it. |
|
Replaces the specified old child node with the supplied new child node. |
|
Saves an XML document to the specified location. |
|
Applies the specified pattern-matching operation to this node's context and returns the list of matching nodes as IXMLDOMNodeList. |
|
Applies the specified pattern-matching operation to this node's context and returns the first matching node. |
|
Processes this node and its children using the supplied XSLT style sheet and returns the resulting transformation. |
|
Processes this node and its children using the supplied XSLT style sheet and returns the resulting transformation in the supplied object. |