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

技术总结:在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上测试,将会对文本中"<" ">" "&"对三个字符进行编码得到“&lt;”“&gt;”“&amp;”。
 content.text = "<![CDATA[<h1>adfce<h1>]]>";
  这时候content.xml实际上是“<content>&lt;![CDATA[&lt;h1&gt;adfce&lt;h1&gt;]]&gt;</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);
 
}
 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值