The Microsoft XML Parser To create an XML Document object with JavaScript, use the following code:
var xmlDoc=new ActiveXObject("Microsoft.XMLDOM") xmlDoc.appendChild(xmlDoc.createElement("root")) | XML Parser in Mozilla Browsers Plain XML documents are displayed in a tree-like structure in Mozilla (just like IE). Mozilla also supports parsing of XML data that resides in a file, using JavaScript. The parsed data can be displayed as HTML. To create an XML Document object with JavaScript in Mozilla, use the following code:
var xmlDoc=document.implementation.createDocument("ns","root",null) | The first parameter, ns, defines the namespace used for the XML document. The second parameter, root, is the XML root element in the XML file. The third parameter, null, is always null because it is not implemented yet. Loading an XML File Into the Parser The following code loads an existing XML document ("note.xml") into the XML parser:
<script type="text/javascript">
var xmlDoc=new ActiveXObject("Microsoft.XMLDOM") xmlDoc.async="false" xmlDoc.load("note.xml") ... ... ... </script>//ie和firefox都支持load,firefox不支持loadXML(string text) | The first line of the script creates an instance of the Microsoft XML parser. The third line tells the parser to load an XML document called "note.xml". The second line turns off asynchronized loading, to make sure that the parser will not continue execution of the script before the document is fully loaded. Accessing XML Elements by Name Addressing elements by number is NOT the preferred way to extract elements from XML documents. Using names is a better way:
<script type="text/javascript"> function loadXML() { var xmlDoc=new ActiveXObject("Microsoft.XMLDOM") xmlDoc.async="false" xmlDoc.load("note.xml")//注意firefox的load("note.xml")并不会读该文件,须要给fox增加loadXML()涵数
xmlDoc.getElementsByTagName("to").item(0).text xmlDoc.getElementsByTagName("from").item(0).text xmlDoc.getElementsByTagName("heading").item(0).text xmlDoc.getElementsByTagName("body").item(0).text } </script> | Important: To extract the text (Jani) from an element like this: <from>Jani</from>, the syntax is: getElementsByTagName("from").item(0).text, and NOT like this: getElementsByTagName("from").text. The reason for this is that the result returned from getElementsByTagName is an array of nodes, containing all nodes found within the XML document with the specified tag name (in this case "from"). The XMLHttpRequest object is supported in Internet Explorer 5.0+, Safari 1.2, Mozilla 1.0 / Firefox, and Netscape 7.
What is an HTTP Request? With an HTTP request, a web page can make a request to, and get a response from a web server - without reloading the page. The user will stay on the same page, and he or she will not notice that scripts might request pages, or send data to a server in the background. By using the XMLHttpRequest object, a web developer can change a page with data from the server after the page has loaded. Google Suggest is using the XMLHttpRequest object to create a very dynamic web interface: When you start typing in Google's search box, a JavaScript sends the letters off to a server and the server returns a list of suggestions. Creating an XMLHttpRequest Object For Mozilla, Firefox, Safari, and Netscape:
var xmlhttp=new XMLHttpRequest() | For Internet Explorer:
var xmlhttp=new ActiveXObject("Microsoft.XMLHTTP") | Example
<script type="text/javascript"> var xmlhttp function loadXMLDoc(url) { // code for Mozilla, etc. if (window.XMLHttpRequest) { xmlhttp=new XMLHttpRequest() xmlhttp.onreadystatechange=xmlhttpChange xmlhttp.open("GET",url,true) xmlhttp.send(null) } // code for IE else if (window.ActiveXObject) { xmlhttp=new ActiveXObject("Microsoft.XMLHTTP") if (xmlhttp) { xmlhttp.onreadystatechange=xmlhttpChange xmlhttp.open("GET",url,true) xmlhttp.send() } } } function xmlhttpChange() { // if xmlhttp shows "loaded" if (xmlhttp.readyState==4) { // if "OK" if (xmlhttp.status==200) { // ...some code here... } else { alert("Problem retrieving XML data") } } } </script> | Why are we Using async in our Examples? Most of the examples here use the async mode (the third parameter of open() set to true). The async parameter specifies whether the request should be handled asynchronously or not. True means that script continues to run after the send() method, without waiting for a response from the server. false means that the script waits for a response before continuing script processing. By setting this parameter to false, you run the risk of having your script hang if there is a network or server problem, or if the request is long (the UI locks while the request is being made) a user may even see the "Not Responding" message. It is safer to send asynchronously and design your code around the onreadystatechange event The XMLHttpRequest Object Reference Methods
Method | Description |
---|
abort() | Cancels the current request | getAllResponseHeaders() | Returns the complete set of http headers as a string | getResponseHeader("headername") | Returns the value of the specified http header | open("method","URL",async,"uname","pswd") | Specifies the method, URL, and other optional attributes of a request The method parameter can have a value of "GET", "POST", or "PUT" (use "GET" when requesting data and use "POST" when sending data (especially if the length of the data is greater than 512 bytes. The URL parameter may be either a relative or complete URL. The async parameter specifies whether the request should be handled asynchronously or not. true means that script processing carries on after the send() method, without waiting for a response. false means that the script waits for a response before continuing script processing | send(content) | Sends the request | setRequestHeader("label","value") | Adds a label/value pair to the http header to be sent | Properties
Property | Description |
---|
onreadystatechange | An event handler for an event that fires at every state change | readyState | Returns the state of the object: 0 = uninitialized 1 = loading 2 = loaded 3 = interactive 4 = complete | responseText | Returns the response as a string | responseXML | Returns the response as XML. This property returns an XML document object, which can be examined and parsed using W3C DOM node tree methods and properties | status | Returns the status as a number (e.g. 404 for "Not Found" or 200 for "OK") | statusText | Returns the status as a string (e.g. "Not Found" or "OK") | XML DOM Node Types The DOM Structure The DOM presents a document as a hierarchy of node objects. The following table lists the different W3C node types, and which node types they may have as children:
Node type | Description | Children |
---|
Document | Represents the entire document (it is the root-node of the DOM tree) | Element (max. one), ProcessingInstruction, Comment, DocumentType | DocumentFragment | Represents a "lightweight" Document object, which can hold a portion of a document | Element, ProcessingInstruction, Comment, Text, CDATASection, EntityReference | DocumentType | Represents a list of the entities that are defined for the document | None | EntityReference | Represents an entity reference | Element, ProcessingInstruction, Comment, Text, CDATASection, EntityReference | Element | Represents an element | Element, Text, Comment, ProcessingInstruction, CDATASection, EntityReference | Attr | Represents an attribute | Text, EntityReference | ProcessingInstruction | Represents a "processing instruction" | None | Comment | Represents a comment | None | Text | Represents textual content (character data) in an element or attribute | None | CDATASection | Represents a block of text that may contains characters that would otherwise be treated as markup | None | Entity | Represents an entity | Element, ProcessingInstruction, Comment, Text, CDATASection, EntityReference | Notation | Represents a notation declared in the DTD | None |
Node Types - Return Values Below is a list of what the nodeName and the nodeValue properties will return for each nodetype:
Node type | nodeName returns | nodeValue returns |
---|
Document | #document | null | DocumentFragment | #document fragment | null | DocumentType | doctype name | null | EntityReference | entity reference name | null | Element | element name | null | Attr | attribute name | attribute value | ProcessingInstruction | target | content of node | Comment | #comment | comment text | Text | #text | content of node | CDATASection | #cdata-section | content of node | Entity | entity name | null | Notation | notation name | null |
NodeTypes - Named Constants
NodeType | Named Constant |
---|
1 | ELEMENT_NODE | 2 | ATTRIBUTE_NODE | 3 | TEXT_NODE | 4 | CDATA_SECTION_NODE | 5 | ENTITY_REFERENCE_NODE | 6 | ENTITY_NODE | 7 | PROCESSING_INSTRUCTION_NODE | 8 | COMMENT_NODE | 9 | DOCUMENT_NODE | 10 | DOCUMENT_TYPE_NODE | 11 | DOCUMENT_FRAGMENT_NODE | 12 | NOTATION_NODE | XML DOM - The Attr Object The Attr object The attr object represents an attribute of an element object. The attr object's properties and methods are described below: Properties
Property | Description |
---|
attributes | Returns a NamedNodeMap that contains all attributes of a node | childNodes | Returns a node list that contains all children of a node | firstChild | Returns the first child node of a node | lastChild | Returns the last child node of a node | name | Returns the name of the attribute | nextSibling | Returns the node immediately following a node. Two nodes are siblings if they have the same parent node | nodeName | Returns the name of the node (depending on the node type) | nodeType | Returns the node type as a number | nodeValue | Returns the value of the node | ownerDocument | Returns the Document object of a node (returns the root node of the document) | parentNode | Returns the parent node of a node | previousSibling | Returns the node immediately preceding a node. Two nodes are siblings if they have the same parent node | value | Returns the value of the attribute | Methods
Method | Description |
---|
appendChild(tagname) | Appends a new child node to a node | cloneNode(boolean) | Creates an exact clone node of a node. If the boolean parameter is set to true, the cloned node clones all the child nodes of the original node as well | hasChildNodes() | Returns true if a node has child nodes. Otherwise it returns false | insertBefore(newnode,refnode) | Inserts a new node (newnode) before the existing node (refnode) | removeChild(nodename) | Removes the specified node and returns it | replaceChild(newnode,oldnode) | Replaces the oldnode with the newnode, and returns the oldnode | The CDATASection comment object The CDATASection object represents CDATASection nodes in a document. A CDATASection node is used to escape parts of text which normally would be recognized as markup. The CDATASection object's properties and methods are described below: Properties
Property | Description |
---|
attributes | Returns a NamedNodeMap that contains all attributes of a node | childNodes | Returns a node list that contains all children of a node | data | Returns the data of the node | firstChild | Returns the first child node of a node | lastChild | Returns the last child node of a node | length | Returns the length of the data (in characters) | nextSibling | Returns the node immediately following a node. Two nodes are siblings if they have the same parent node | nodeName | Returns the name of the node (depending on the node type) | nodeType | Returns the node type as a number | nodeValue | Returns the value of the node | ownerDocument | Returns the Document object of a node (returns the root node of the document) | parentNode | Returns the parent node of a node | previousSibling | Returns the node immediately preceding a node. Two nodes are siblings if they have the same parent node | Methods
Method | Description |
---|
appendChild(tagname) | Appends a new child node to a node | appendData(strdata) | Appends the specified string to the existing data | cloneNode(boolean) | Creates an exact clone node of a node. If the boolean parameter is set to true, the cloned node clones all the child nodes of the original node as well | deleteData(offset,count) | Removes the specified range of characters from the data | hasChildNodes() | Returns true if a node has child nodes. Otherwise it returns false | insertBefore(newnode,refnode) | Inserts a new node (newnode) before the existing node (refnode) | insertData(offset,string) | Inserts the stringdata at the specified offset | removeChild(nodename) | Removes the specified node and returns it | replaceChild(newnode,oldnode) | Replaces the oldnode with the newnode, and returns the oldnode | replaceData(offset,count,stringdata) | Replaces the characters from the specified offset with the stringdata | The Document object The document object is the root element in the node-tree. All nodes in the node tree are child nodes of the document object. The document object's properties, methods, and events are described below: Properties
Property | Description |
---|
attributes | Returns a NamedNodeMap that contains all attributes of a node | childNodes | Returns a node list that contains all children of a node | doctype | Returns the DTD or Schema for the document | documentElement | Returns the root element of the document | firstChild | Returns the first child node of a node | implementation | Returns the DOMImplementation object for this particular document | lastChild | Returns the last child node of a node | nextSibling | Returns the node immediately following a node. Two nodes are siblings if they have the same parent node | nodeName | Returns the name of the node | nodeType | Returns the node type as a number | nodeValue | Returns the value of the node | ownerDocument | Returns the Document object of a node (returns the root node of the document) | parentNode | Returns the parent node of a node | previousSibling | Returns the node immediately preceding a node. Two nodes are siblings if they have the same parent node | Methods
Method | Description |
---|
appendChild(tagname) | Appends a new child node to a node | cloneNode(boolean) | Creates an exact clone node of a node. If the boolean parameter is set to true, the cloned node clones all the child nodes of the original node as well | createAttribute(attrname) | Creates an Attr node with the specified name | createCDATASection(text) | Creates a CDATASection node, containing the specified text | createComment(text) | Creates a comment node, containing the specified text | createDocumentFragment() | Creates an empty documentFragment object | createElement(tagname) | Creates an element node with the specified name | createEntityReference(refname) | Creates an entityReference node with the specified name | createProcessingInstruction(target,text) | Creates a processingInstruction node, containing the specified target and text | createTextNode(text) | Creates a text node, containing the specified text | getElementsByTagName(tagname) | Returns the specified node, and all its child nodes, as a node list | hasChildNodes() | Returns true if a node has child nodes. Otherwise it returns false | insertBefore(newnode,refnode) | Inserts a new node (newnode) before the existing node (refnode) | removeChild(nodename) | Removes the specified node and returns it | replaceChild(newnode,oldnode) | Replaces the oldnode with the newnode, and returns the oldnode | The Element object The element object represents the element nodes in the document. If the element node contains text, this text is represented in a text node. The element object's properties and methods are described below: Properties
Property | Description |
---|
attributes | Returns a NamedNodeMap that contains all attributes of a node | childNodes | Returns a node list that contains all children of a node | firstChild | Returns the first child node of a node | lastChild | Returns the last child node of a node | nextSibling | Returns the node immediately following a node. Two nodes are siblings if they have the same parent node | nodeName | Returns the name of the node (depending on the node type) | nodeType | Returns the node type as a number | nodeValue | Returns the value of the node | ownerDocument | Returns the Document object of a node (returns the root node of the document) | parentNode | Returns the parent node of a node | previousSibling | Returns the node immediately preceding a node. Two nodes are siblings if they have the same parent node | tagName | Returns the name of the element node | Methods
Method | Description |
---|
appendChild(tagname) | Appends a new child node to a node | cloneNode(boolean) | Creates an exact clone node of a node. If the boolean parameter is set to true, the cloned node clones all the child nodes of the original node as well | getAttribute(attrname) | Returns the value of the specified attribute | getAttributeNode(attrname) | Returns the specified attribute node as an Attr object | getElementsByTagName(tagname) | Returns the specified node, and all its child nodes, as a node list | hasChildNodes() | Returns true if a node has child nodes. Otherwise it returns false | insertBefore(newnode,refnode) | Inserts a new node (newnode) before the existing node (refnode) | normalize() | Combines all subtree Text nodes into a single one | removeAttribute(attrname) | Removes the specified attribute's value | removeAttributeNode(attriname) | Removes the specified attribute node | removeChild(nodename) | Removes the specified node and returns it | replaceChild(newnode,oldnode) | Replaces the oldnode with the newnode, and returns the oldnode | setAttribute(attrname,attrvalue) | Sets the value of the named attribute | setAttributeNode(attrname) | Inserts the specified new attribute to the element | The Node Object The node object represents a node in the node-tree. The node object's properties and methods are described below: Properties
Property | Description |
---|
attributes | Returns a NamedNodeMap that contains all attributes of a node | childNodes | Returns a node list that contains all children of a node | firstChild | Returns the first child node of a node | lastChild | Returns the last child node of a node | nextSibling | Returns the node immediately following a node. Two nodes are siblings if they have the same parent node | nodeName | Returns the name of the node (depending on the node type) | nodeType | Returns the node type as a number | nodeValue | Returns the value of the node | ownerDocument | Returns the Document object of a node (returns the root node of the document) | parentNode | Returns the parent node of a node | previousSibling | Returns the node immediately preceding a node. Two nodes are siblings if they have the same parent node | Methods
Method | Description |
---|
appendChild(tagname) | Appends a new child node to a node | cloneNode(boolean) | Creates an exact clone node of a node. If the boolean parameter is set to true, the cloned node clones all the child nodes of the original node as well | hasChildNodes() | Returns true if a node has child nodes. Otherwise it returns false | insertBefore(newnode,refnode) | Inserts a new node (newnode) before the existing node (refnode) | removeChild(nodename) | Removes the specified node and returns it | replaceChild(newnode,oldnode) | Replaces the oldnode with the newnode, and returns the oldnode | The NodeList object The nodeList object represents a node and its child nodes as a node-tree. The nodeList object's properties and methods are described below: Properties
Property | Description |
---|
length | Returns the number of items in the node list | Methods
Method | Description |
---|
item(index) | Returns the item at the specified index in the node list | The Text object The text object represents the text of an attribute or element object. The text object's properties and methods are described below: Properties
Property | Description |
---|
attributes | Returns a NamedNodeMap that contains all attributes of a node | childNodes | Returns a node list that contains all children of a node | data | Returns the data of the node | firstChild | Returns the first child node of a node | lastChild | Returns the last child node of a node | length | Returns the length of the data (in characters) | nextSibling | Returns the node immediately following a node. Two nodes are siblings if they have the same parent node | nodeName | Returns the name of the node (depending on the node type) | nodeType | Returns the node type as a number | nodeValue | Returns the value of the node | ownerDocument | Returns the Document object of a node (returns the root node of the document) | parentNode | Returns the parent node of a node | previousSibling | Returns the node immediately preceding a node. Two nodes are siblings if they have the same parent node | Methods
Method | Description |
---|
appendChild(tagname) | Appends a new child node to a node | appendData(strdata) | Appends the specified string to the existing data | cloneNode(boolean) | Creates an exact clone node of a node. If the boolean parameter is set to true, the cloned node clones all the child nodes of the original node as well | deleteData(offset,count) | Removes the specified range of characters from the data | hasChildNodes() | Returns true if a node has child nodes. Otherwise it returns false | insertBefore(newnode,refnode) | Inserts a new node (newnode) before the existing node (refnode) | insertData(offset,string) | Inserts the stringdata at the specified offset | removeChild(nodename) | Removes the specified node and returns it | replaceChild(newnode,oldnode) | Replaces the oldnode with the newnode, and returns the oldnode | replaceData(offset,count,stringdata) | Replaces the characters from the specified offset with the stringdata |
|