您的位置:首页 > 其它

技术总结:在xml添加使用内容。

2007-07-09 16:30 393 查看
技术总结:在xml添加使用内容。
说明:下面的代码主要是采用JavaScript脚本,其它语言基本上是一样的。

一、基本的用法
1、创建xml对象:
var xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
2、装载基本的内容,语法说明和根节点root
xmlDoc.loadXML('<?xml version="1.0"?><root/>');
3、创建一个普通(text)节点。
var content = xmlDoc.createElement("content");
4、向节点当中放入内容
content.text = "abcd";
5、获取节点,和节点内容:
var getNode = xmlDoc.documentElement.selectSingleNode("content");
alert(getNode.text);
二、CDATA型的节点:
1、创建元素
var nn = xmlDoc.createElement("abc");
2、创建CDATA:
var mmm = xmlDoc.createCDATASection("<h1>adfce<h1>/n");
3、将CDATA附加到元素
nn.appendChild(mmm);
4、将元素作为节点附加到xml
xmlDoc.documentElement.appendChild(nn);
三、获取节点的几种方式
1、获取单个节点
var getNode = xmlDoc.documentElement.selectSingleNode("content");

alert(getNode.text);
其中xmlDoc.documentElement.selectSingleNode("content")等效于xmlDoc.selectSingleNode("/root/content");
这是因为xmlDoc.documentElement其实就是表示xml的根节点,这里面就是实际上的<root></root>下面这段代码也许能够说明问题:
var getNode = xmlDoc.selectSingleNode("root");
var a = getNode.selectSingleNode("content");
2、通过标签名
这种方面获取的,实际上是一个数组,哪怕实际上在xml中只有一个符合结果的标签名。

var getNode = xmlDoc.getElementsByTagName("content");
alert(getNode[0].text);
例子中,没有循环罗列数组,只显示第一个。

3、通过xpath获取
通上,这也是一个数组。
var getNode = xmlDoc.selectNodes("/root/content");
alert(getNode[0].text);

四、要不要CDATA?
1、普通的方式
经过这种方式斌值 content.text = "<![CDATA[<h1>adfce<h1>]]>";
如果直接斌值,经过在IE6上测试,将会对文本中"<" ">" "&"对三个字符进行编码得到“<”“>”“&”。
content.text = "<![CDATA[<h1>adfce<h1>]]>";
  这时候content.xml实际上是“<content><![CDATA[<h1>adfce<h1>]]></content>”
  但是,取值的时候,就会将编码还原。
var m = content.text
  这时候得到的m仍然是<![CDATA[<h1>adfce<h1>]]>

  小结:也就是说,对于html代码、文本来说,存储到xml中,只用普通的text一般情况也没有什么问题。
2、使用CDATA
在前面“二”部分创建了一个Element: abc,
var getNode = xmlDoc.selectNodes("/root/abc");

alert(getNode[0].text);
alert(getNode[0].xml);

运行之后得到的代码:结果是
getNode[0].text ==>> <h1>adfce<h1>
getNode[0].xml  ==>> <![CDATA[<h1>adfce<h1>]]>
  小结:放在CDATA类型节点中的数据,xml是不会对其进行编码和解码的。
3、总结:
  对于文本和html格式的数据,用不用CDATA区别不大。

五、部分测试代码
function testCDATA(){
var xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
xmlDoc.loadXML('<?xml version="1.0"?><root/>');
var content = xmlDoc.createElement("content");
//var n_content = "abc123";
var n_content = "<h1>adfce<h1>";
content.text = "<![CDATA[" + n_content + "]]>";
xmlDoc.documentElement.appendChild(content);
alert(xmlDoc.xml);


var nn = xmlDoc.createElement("abc");
var mmm = xmlDoc.createCDATASection("<h1>adfce<h1>/n");
//alert(mmm.xml);
nn.appendChild(mmm);
xmlDoc.documentElement.appendChild(nn);
//alert(xmlDoc.xml);
//alert(nn.text);

var getNode = xmlDoc.documentElement.selectSingleNode("content");
var getNode = xmlDoc.selectSingleNode("/root/content");

var getNode = xmlDoc.selectSingleNode("root");
var a = getNode.selectSingleNode("content");
//alert(a.text);
var getNode = xmlDoc.getElementsByTagName("content");

var getNode = xmlDoc.selectNodes("/root/content");
alert(getNode[0].text);
alert(getNode[0].xml);

var getNode = xmlDoc.selectNodes("/root/abc");

alert(getNode[0].text);
alert(getNode[0].xml);

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐