Chinaunix首页 | 论坛 | 博客
  • 博客访问: 627795
  • 博文数量: 138
  • 博客积分: 3067
  • 博客等级: 中校
  • 技术积分: 1565
  • 用 户 组: 普通用户
  • 注册时间: 2008-02-21 12:44
文章分类

全部博文(138)

文章存档

2016年(5)

2014年(4)

2012年(1)

2011年(2)

2010年(10)

2009年(19)

2008年(97)

我的朋友

分类:

2008-06-13 19:16:52

Microsoft.XMLDOM相关资料
取得根节点
set dom=CreateObject("microsoft.xmldom")
dom.async=false
dom.load "c:\user.xml"
getElementById
set book1=rootNode.childNodes(1)
book1.ownerDocument 返回Document节点,指向XML文档本身
book1.previousSibling 前一个节点
book1.parentNode 父节点
book1.firstChild 第一个子节点
book1.lastChild 最后一个子节点
book1.childNodes 子节点集合
添加节点
set node=rootNode.childNodes.item(0)
set newNode=myDocument.createElement("publisher")
set rtnNode=node.insertBefore(newNode,node.lastChild)
set textNode=myDocument.createTextNode("人民邮电出版社")
node.childNodes.item(1).appendChild(textNode)
删除节点
set node=root.childNodes.item(0)
set oldNode=node.removeChild(node.childNodes.item(4))
修改节点
set node=root.childNodes.item(0)
node.nodeValue="158"
常用DOM的方法
createAttribute(属性的名字) 创建一个属性节点。然后可以用setAttributeNode方法把该属性设置为某个元素的属性
createCDATASection(内容) 创建一个CDATA节点。
createMessage(内容) 创建一个注释节点,值就是参数内容
createElement(名字) 创建元素节点
createEntityReference(名字) 创建一个实体引用节点,如果被引用的实体是已知的,那么该实体引用节点和相应的实体节点有同样的子节点集
createProcessingInstruction(处理指令的目标部分,处理指令的数据部分) 创建一个具有指定名字和数据的处理指令节点
createTextNode(内容) 创建一个具有指定内容的文本节点
Node的常用属性
attributes
childNodes 子节点的集合
firstChild 第一个子节点
lastChild 最后一个子节点
previousSibling 当前节点的前驱节点
nextSibling 当前节点的后继节点
nodeName 当前节点的名字
nodeType 节点类型
nodeValue 节点的值
parentNodes 父节点
Node方法
appendChild(newChild) 添加到所有子节点的最后,返回添加的节点
cloneNode(boolean deep) 复制当前节点,复制产生的节点没有父节点,返回复制的节点
hasChildNodes 无参数,判断是否有子节点
createElement 创建元素节点
insertBefore(newChild,refChild) 把节点newChild插入到当前节点的子节点refChild之前。返回插入的节点
removeChild(oldChild) 把子节点oldChild删除,并返回oldChild节点。
replaceChild(newChild,oldChild) 替换节点,返回被删除的节点
NodeList
是动态的,对文档的改变会直接反映到相关的NodeList对象中。
属性:
length
Item(0)-Item(nodeList.length-1)
NamedNodeMap
包含的节点是无序的。表示节点和唯一名字的对应关系。
属性length
方法:
getNamedItem(name) 返回给定名称的节点
item(0...)
removeNamedItem(name) 删除给定名称的节点
setNamedItem(name) 把给定节点名的节点添加到当前节点集中,如果改名字节点已经存在,替换
ASP通过XMLDom在服务器端操作XML文件的主要方法和实现
对于小数据量,xml文件在检索更新上于ACCESS有很多优势。
我曾经测试过不用数据库,把网站的会员信息,商品数据信息,交易信息,网站定制信息全部存放在三个xml文件中,运行结果十分正常,感觉上比数据库快多了,不过没有作测试,不能确定。
下面说一下创建,查询,修改等对xml操作的主要方法
’创建DOM对象
set objDom=server.CreateObject("MicroSoft.XMLDom")
’取得xml数据
’方法1 取得xml文件的xml数据
objDom.load("c:\test.xml")
’方法2 取得xml数据串的数据
objDom.loadxml("")
’创建一个节点对象
Set Newnode=objDom.CreateElement("people")
’给这个节点赴值
Newnode.Text="人"
’ 给这个节点添加属性
Set NewAttribute=objDom.CreateNode("attribute","name","")
NewAttribute.Text= "张三"
Newnode.SetAttributeNode NewAttribute
’给这个节点添加子节点
Set NewnodeChild=objDom.CreateElement("address")
Newnode.appendChild NewnodeChild
’保存这个节点对象
objDom.appendChild Newnode
objDom.save("c:\test.xml")
’查找一个节点对象
set objtofind=objdom.documentElement.SelectSingleNode("//people/man")
’取出这个节点对象的 节点名,节点值,某个属性值,和全部的xml
nodename=objtofind.nodename
nodevalue=objtofind.text
objtofind.GetAttributeNode("name").Nodevalue ’属性名为name的属性值
’取出一个属性节点对象
set objattrtofind=objdom.documentElement.SelectSingleNode("//people/man"). GetAttributeNode("name")
’取出这个节点的属性名,属性值
nodeattrname=objattrtofind.nodename
nodeattrvalue=objattrtofind.nodevalue
’删除一个节点对象
set objnode=objdom.documentElement.SelectSingleNode("//people/man") ’要删除的节点
set objparentnode=objdom.documentElement.SelectSingleNode("//people") ’要删除的节点的父节点
objparentnode.removeChild objnode
’取出一个节点的字节点集合
set objnodes=objdom.documentElement.SelectSingleNode("//people/man").ChildNodes
遍历这个集合
方法1
for each element in objnodes
response.write element.nodename 字节点名
response.write element.text 字节点值
next
方法2
domlength=objnodes.length
for i = 0 to domlength-1
response.write objnodes.childnodes(i).nodename 字节点名
response.write objnodes.childnodes(i).text 字节点值
next
取出一个节点的属性集合
set objnodes=objdom.documentElement.SelectSingleNode("//people/man").GetAttributeNode("name").attributes
遍历这个集合
for each element in objnodes
response.write element.nodename 属性名
response.write element.nodevalue 属性值
next
 
 
 
ref: 
Methods and properties of Microsoft.XMLDOM
Document
Properties
*async
boolean: specifies whether asynchronous download of the document is permitted.
*doctype
*documentElement
*implementation
*ondataavailable [ie]
*onreadystateChange [ie]
*ontransformnode [ie]
*parseError [ie]
*preserveWhiteSpace [ie]
*readyState
*resolveExternals [ie]
*setProperty ) [ie]
The following (2nd level) properties can be set:
*AllowDocumentFunction
* ForcedResync
*MaxXMLSize
*NewParser
*SelectionLanguage
*SelectionNamespace
*ServerHTTPRequest
for example:
xmlDoc.setProperty("SelectionLanguage", "XPath");
selection = xmlDoc.selectNodes("//Customer");
*url [ie]
*validateOnParse [ie]
Methods
*abort [ie]
*createAttribute
*createCDATASection (data )
*createComment (comment)
*createDocumentFragment (data )
*createElement (tagName)
*createEntityReference (name )
*createNode [ie] (type, name, nameSpaceURI)
*createProcessingInstruction (target, data)
*createTextNode (data)
*getElementsByTagName (tagName)
*load [ie] (url)
*loadXML [ie] (xml_string)
*nodeFromID [ie] (id_string)
*save [ie] (objTarget)
Node
Properties
*attributes
*returns an array of objects. An object in this array has the name and value property.
*baseName [ie]
*childNodes
*dataType [ie]
*definition [ie]
*firstChild
*lastChild
*namespaceURI [ie]
*nodeName
*nodeType
Can be
1: Element
2: Attribute
3: Text
4: CDATA Section
5: Entity Reference
6: Entity
7: Processing Instruction
8: Comment
9: Document
10: Document Type
11: Document Fragment
12: Notation
*nodeTypedValue [ie]
*nodeTypeString [ie]
*nodeValue
This property defines the content of a div. The following example uses nodeValue to write the seconds since the page was loaded:
0
*ownerDocument
*parentNode
*parsed [ie]
*prefix
*previousSibling [ie]
*specified [ie]
*text [ie]
*xml [ie]
Methods
*appendChild (tagName)
*cloneNode (deep )
If deep is true, the children and children's children are cloned as well.
*hasChildNodes ()
*insertBefore (newChild, refChild)
*removeChild (child)
*replaceChild (newChild, oldChild)
*selectNodes [ie] (patternString)
Returns a list of nodes.
For example:
xmlDoc.setProperty("SelectionNamespaces", "xmlns:xsl=''");
xmlDoc.setProperty("SelectionLanguage", "XPath");
objNodeList = xmlDoc.documentElement.selectNodes("//xsl:template");
*selectSingleNode [ie] (patternString)
*transformNode [ie] (stylesheet)
*transformNodeToObject [ie] (stylesheet, outputObject)
async 属性
作 用 async 属性表示是否允许异步的下载。
基本语法 boolValue = XMLDocument.async;XMLDocument.async = boolValue;
说 明 布尔值是可擦写的(read/write),如果准许异步下载,值为True;反之则为False。
范 例
xmlDoc.async = "false";
alert(xmlDoc.async);
=================================================
attribute 属性
作 用 传回目前节点的属性列表。
基本语法 objAttributeList = xmlNode.attributes;
说 明 传回一个物件。如果此节点不能包含属性,则传回空值。
范 例
objAttList = xmlDoc.documentElement.attributes;
alert(objAttList);
=================================================
childNodes 属性
作 用 传回一个节点清单,包含该节点所有可用的子节点。
基本语法 objNodeList=node.childNodes;
说 明 传回一个物件。假如这节点没有子节点,传回null。
范 例
objNodeList = xmlDoc.childNodes;
alert(objNodeList);
=================================================
doctype 属性
作 用 传回文件型态节点,包含目前文件的DTD。这节点是一般的文件型态宣告,例如,节点,名为EMAIL 的节点物件会被传回。
基本语法 objDocType=xmlDocument.doctype;
说 明 传回一个对象,这个属性是只读的。假如这文件不包含DTD,会传回null。
范 例
objDocType = xmlDoc.doctype;
alert(objDocType.nodeName);
=================================================
documentElement 属性
作 用 确认XML 文件的根(Root)节点。
基本语法 objDoc=xmlDocument.documentElement;
说 明 回一个在单一根文件元素中包含数据的对象。此属性可读/写,如果文件中不包含根节点,将传回null。
范 例
objDocRoot = xmlDoc.documentElement;
alert(objDocRoot);
=================================================
firstChild 属性
作 用 确认在目前节点中的第一个子元素。
基本语法 objFirstChild = xmlDocNode.firstChild ;
说 明 此属性只读且会传回一对象,如果节点中没有包含第一个子元素,将传回null。
范 例
objFirstChild = xmlDoc.documentElement.firstChild;
alert(objFirstChild);
=================================================
implementation 属性
作 用 DOM 应用程序能使用其它实作中的对象。implementation 属性确认目前XML 文件的DOMimplementation 对象。
基本语法 objImplementation = xmlDocument.implementation;
说 明 此属性只读且传回一个对象。
范 例
objImp = xmlDoc.implementation;
alert(objImp);
=================================================
lastChild 属性
作 用 确认目前节点中最后的子元素。
基本语法 objLastChild = xmlDocNode.lastChild;
说 明 此属性只读且传回一个对象。如果节点中没有包含最后子元素,将传回null。
范 例
objLastChild = xmlDoc.documentElement.lastChild;
alert(objLastChild);
=================================================
nextSibling 属性
作 用 在目前文件节点的子节点列表中传回下一个兄弟节点。
基本语法 objNextSibling = xmlDocNode.nextSibling;
说 明 此属性是只读且传回一个对象。如果节点中没有包含其它的相关节点,会传回null。
范 例
objSibling = xmlDoc.documentElement.childNodes.item(1) .nextSibling;
alert(objSibling);
=================================================
nodeName 属性
作 用 传回代表目前节点名称的字符串。
基本语法 strNodeName = xmlDocNode.nodeName ;
说 明 传回一个字符串。这个属性是只读的,传回元素名称、属性或实体参照。
范 例
strNodeName = xmlDoc.documentElement.nodeName;
alert(strNodeName);
=================================================
nodeType 属性
作 用 辨识节点的DOM 型态。
基本语法 numNodeType = xmlDocNode.nodeType ;
说 明 此属性只读且传回一个数值。
有效的数值符合以下的型别:
1-ELEMENT
2-ATTRIBUTE
3-TEXT
4-CDATA
5-ENTITY REFERENCE
6-ENTITY
7-PI (processing instruction)
8-COMMENT
9-DOCUMENT
10-DOCUMENT TYPE
11-DOCUMENT FRAGMENT
12-NOTATION
 
范 例
numNodeType = xmlDoc.documentElement.nodeType;
alert(numNodeType);
=================================================
nodeValue 属性
作 用 传回指定节点相关的文字。这并非一个元素中数据的值,而是与一个节点相关且未解析的文字,就像一个属性或者一个处理指令。
基本语法 varNodeValue = xmlDocNode.nodeValue;
说 明 传回的文字代表以节点的nodeType 属性为主的型态值。(请参考附录中的nodeType 属性。)因为节点型态可能是几种数据型态中的一种,传回值也因此有差异。传回null 的节点型态有:DOCUMENT、ELEMENT、DOCUMENT TYPE、DOCUMENT FRAGMENT、ENTITY、ENTITY REFERENCE,和NOTATION。此属性可擦写。
范 例
varNodeValue = xmlDoc.documentElement.nodeValue;
alert(varNodeValue);
=================================================
ondataavailable 属性
作 用 指定一个事件来处理ondataavailable 事件。
基本语法 xmlDocNode.ondataavailable = value;
说 明 此属性是唯写,允许文件作者一旦数据为可用,即可尽快的使用数据来运作。
范 例
xmlDoc.ondataavailable = alert("Data is now available.");
=================================================
onreadystatechange 属性
作 用 指定一个事件来处理onreadystatechange 事件。这个事件能辨识readyState 属性的改变。
基本语法 xmlDocNode.onreadystatechange = value;
说 明 此属性是唯写的,允许文件作者指定当readyState 属性改变时呼叫事件。
范 例
xmlDoc.onreadystatechange = alert("The readyState property has changed.");
=================================================
ownerDocument 属性
作 用 传回文件的根节点,包含目前节点。
基本语法 objOwnerDoc = xmlDocument.ownerDocument;
说 明 此属性是只读的,传回一个包含文件根节点的对象,包含特定的节点。
范 例
objOwnerDoc = xmlDoc.childNodes.item(2).ownerDocument;
alert(objOwnerDoc);
=================================================
parentNode 属性
作 用 传回目前节点的父节点。只能应用在有父节点的节点中。
基本语法 objParentNode = xmlDocumentNode.parentNode;
说 明 此属性是只读的,传回包含指定节点的父节点对象。如果此节点不存在于文件树中,将传回null。
范 例
objParentNode = xmlDoc.childNodes.item(1).parentNode;
alert(objParentNode);
=================================================
parseError 属性
作 用 传回一个DOM 解析错误对象,此对象描述最后解析错误的讯息。
基本语法 objParseErr = xmlDocument.parseError;
说 明 此属性是只读的。如果没有错误发生,将传回0。
范 例
objParseErr = xmlDoc.parseError;
alert(objParseErr);
=================================================
previousSibling 属性
作 用 传回目前节点之前的兄弟节点。
基本语法 objPrevSibling = xmlDocument.previousSibling;
说 明 传回一个对象,这个属性是只读的。若该节点没有包含前面的兄弟节点,会传回null。
范 例
objPrevSibling = xmlDoc.documentElement.childNodes.item(3).previousSibling;
alert(objPrevSibling);
=================================================
readyState 属性
作 用 传回XML 文件资料的目前状况。
基本语法 intState = xmlDocument.readyState;
说 明 这个属性是只读的,传回值有以下的可能:
0-UNINITIALIZED:XML 对象被产生,但没有任何文件被加载。
1-LOADING:加载程序进行中,但文件尚未开始解析。
2-LOADED:部分的文件已经加载且进行解析,但对象模型尚未生效。
3-INTERACTIVE:仅对已加载的部分文件有效,在此情况下,对象模型是有效但只读的。
4-COMPLETED:文件已完全加载,代表加载成功。
范 例
alert("The readyState property is " + xmlDoc.readyState);
=================================================
url 属性
作 用 传回最近一次加载XML 文件的URL。
基本语法 strDocUrl = xmlDocument.url;
说 明 这个属性是只读的,传回最近一次加载成功文件的URL,若文件仅存在主存储器中(表示该文件并非由外部档案加载),则传回null。
范 例
alert(xmlDoc.url);
=================================================
validateOnParse 属性
作 用 告诉解析器文件是否有效。
基本语法 boolValidate = xmlDocument.validateOnParse; xmlDocument.validateOnParse = boolValidate;
说 明 此属性是可擦写的。如果传回值为true,表示文件被解析时被确认是有效的。如果传回false,表示文件是无效的,并被认为只是标准格式的(well-formed)文件。
范 例
xmlDoc.validateOnParse = true;
alert(xmlDoc.validateOnParse);
=================================================
xml 属性
作 用 传回指定节点的XML 描述和所有的子节点。
基本语法 xmlValue = xmlDocumentNode.xml;
说 明 此属性是只读的。
范 例
xmlValue = xmlDoc.documentElement.xml;
alert(xmlValue);
阅读(3695) | 评论(2) | 转发(0) |
给主人留下些什么吧!~~

chinaunix网友2010-04-06 17:06:50

排版不好 看起來很吃力

lanmuz2008-08-11 16:31:50

microsoft 的 document 对象中的xml 模型 与 xmldom 模型差别 很大 弄的我很苦恼 ,哈哈 ,