Javascript里使用Dom操作Xml-asp.net入门笔记(十一)http://dev.csdn.net/article/78/78093.shtm

 
Javascript里使用Dom操作Xml
一.本笔记使用的Xml文件
二.IXMLDOMDocument/DOMDocument简介   
2.1 属性
2.1.1  parseError
2.1.2  async.
2.1.3  xml

2.1.4  text3

2.1.5  attributes
2.1.6  nodeName
2.1.7  documentElement
2.1.8  nextSibling
2.1.9  childNodes
2.1.10  firstChild
2.1.11  lashChild
2.2 方法
2.2.1  loadXML
2.2.2 load
2.2.3  selectSingleNode
2.2.4  selectNodes
2.2.5  getElementsByTagName
2.2.6  hasChildNodes
三.例子

<?xml version="1.0"?>

<book level="1">

 <Name>c++</Name>

 <Price>20</Price>

 <info>
<k>1</k>
 </info>
 <info>

    <k>2</k>

 </info>

</book>

在asp.net下实现代码:

string str = Server.MapPath("test1.xml");

XmlTextWriter xmlWriter = new XmlTextWriter(str,null);

xmlWriter.Formatting = System.Xml.Formatting.Indented;

xmlWriter.WriteStartDocument();

xmlWriter.WriteStartElement("book");

xmlWriter.WriteAttributeString("level","1");

xmlWriter.WriteElementString("Name","c++");

xmlWriter.WriteElementString("Price","20");

xmlWriter.WriteStartElement("info");

xmlWriter.WriteElementString("k","1");

xmlWriter.WriteEndElement();

xmlWriter.WriteStartElement("info");

xmlWriter.WriteElementString("k","2");

xmlWriter.WriteEndElement();

xmlWriter.WriteEndElement();

xmlWriter.WriteEndDocument();

xmlWriter.Close();

二.IXMLDOMDocument/DOMDocument简介
2.1 属性
211  parseError
Returns an IXMLDOMParseError object that contains information about the last parsing error
返回解析错误时的一个对象。
重要的有parseError.errorCode,parseError.reason
如果load时路径不对,会返回“系统未找到指定的对象”的错误
212  async
Specifies whether asynchronous download is permitted
是否允许异步下载,布尔值

213  xml
Contains the XML representation of the node and all its descendants. Read-only.
该点及下面派生的所有点的全部信息,只读如果要求book点的xml,返回“<book level="1"><Name>c++</Name><Price>20</Price><info><k>1</k></info><info><k>2</k></info></book>”,如果Name的xml,返回“<Name>c++</Name>”
214  text
Represents the text content of the node or the concatenated text representing the node and its descendants. Read/write
该点及下面派生的所有点的全部节点值,可读可写
<price>20</price>
则text为20
"Name"节点的text为"c++"
215  attributes
Contains the list of attributes for this node
返回属性的集合。
216  nodeName
Returns the qualified name for attribute, document type, element, entity, or notation nodes. Returns a fixed string for all
other node types. Read-only
该节点名称
"Name"节点的nodeName为"Name","book"节点的nodeName为"book"
217  documentElement
Contains the root element of the document
xml的根节点
上面的xml的根节点为"book"
218  nextSibling
Contains the next sibling of the node in the parent's child list. Read-only.
下一个兄弟节点,只读
219  childNodes
Contains a node list containing the child nodes
所有的子节点。
2110  firstChild
Contains the first child of the node
第一个子节点
2111  lastChild
Returns the last child node
最后一个子节点

2.2 方法
221  loadXML
Loads an XML document using the supplied string
222 load
Loads an XML document from the specified locati
参数的路径为服务器端的,是相对路径
223  selectSingleNode
Applies the specified pattern-matching operation to this node's context and returns the first matching node
返回第一个匹配的项
224  selectNodes
Applies the specified pattern-matching operation to this node's context and returns the list of matching nodes as IXMLDOMNodeList
符合条件的所有项。
225  getElementsByTagName
Returns a collection of elements that have the specified name
返回与元素名匹配的一个node的集合
226  hasChildNodes
Provides a fast way to determine whether a node has children
判断是否含有子节点
返回值为bool值

var xmlDoc = new ActiveXObject("Msxml2.DOMDocument.3.0");
xmlDoc.async = false;
xmlDoc.load("test//test1.xml");
if (xmlDoc.parseError.errorCode!=0)
{
var error = xmlDoc.parseError;
  alert(error.reason)
return;
}
var root = xmlDoc.documentElement;   //根节点
Form1.test1.value = root.xml;
/*结果如下:
<book level="1"><Name>c++</Name><Price>20</Price><info><k>1</k></info><info><k>2</k></info></book>*/
Form1.test1.value = root.nodeName; //结果为"book"
var att = root.attributes; //得到该点下所有属性的集合
var str = "";
for (var i=0; i<att.length; i++)
{
str += att.item(i).nodeName+":"+att.item(i).text;
}
Form1.test1.value = str; //只有一个属性,所以结果为“level: 1”
var fNode;
var lNode;
var nextSibling;
fNode = root.firstChild;   //第一个子节点Name
lNode = root.lastChild;    //最后一个子节点 info
nextSibling = fNode.nextSibling; //第一个子节点Name的后一个兄弟节点,即Price
str = fNode.nodeName + ":" + fNode.text; //结果:"Name:c++"
str = lNode.nodeName + ":" + lNode.text; //结果为:"info:2"
str = nextSibling.nodeName + ":" + nextSibling.text; //结果为:"Price:20"
var nodeList;
str = "";
nodeList = xmlDoc.selectNodes("//info"); //查找元素名为"info"的节点
for (var j=0; j<nodeList.length; j++) //有两个info节点
{
var infoNode = nodeList.item(j);
var cldNodes = infoNode.childNodes; //info节点的子节点集
for (var k=0; k<cldNodes.length; k++)
{
       str += cldNodes.item(k).nodeName + ":" + cldNodes.item(k).text + " ";
}
//结果“k:1 k: 2 ”
}
str = "";
var sNode;
sNode = xmlDoc.selectSingleNode("//info"); //找到第一个和"info"匹配的
var scldNodes = sNode.childNodes; //info节点的子节点集
for (var t=0; t<scldNodes.length; t++)
{
str += scldNodes.item(t).nodeName + ":" + scldNodes.item(t).text + " ";
}
//结果“k: 1”
Form1.test1.value = str;
 

 

 

 

 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值