xml复习(三)

 

获取元素的值

下面的代码检索第一个 <title> 元素的文本值:

x=xmlDoc.getElementsByTagName("title")[0].childNodes[0];

txt=x.nodeValue;

 

获取属性的值

下面的代码检索第一个 <title> 元素的 "lang" 属性的文本值:

txt=xmlDoc.getElementsByTagName("title")[0].getAttribute("lang");

 

改变元素的值

下面的代码改变第一个 <title> 元素的文本值:

x=xmlDoc.getElementsByTagName("title")[0].childNodes[0];

x.nodeValue="Easy Cooking";

 

改变属性的值

setAttribute() 方法可用于改变已有属性的值,或创建一个新属性。

下面的代码向每个 <book> 元素添加了名为 "edition" 的新属性(值是 "first"):

x=xmlDoc.getElementsByTagName("book");

 

for(i=0;i<x.length;i++)

  {

  x[i].setAttribute("edition","first");

  }

 

创建元素

createElement() 方法创建新的元素节点。

createTextNode() 方法创建新的文本节点。

appendChild() 方法向节点添加子节点(在最后一个子节点之后)。

如需创建带有文本内容的新元素,需要同时创建元素节点和文本节点。

下面的代码创建了一个元素 (<edition>),然后把它添加到第一个 <book> 元素中:

newel=xmlDoc.createElement("edition");
newtext=xmlDoc.createTextNode("First");
newel.appendChild(newtext);
 
x=xmlDoc.getElementsByTagName("book");
x[0].appendChild(newel);

例子解释:

1.    创建 <edition> 元素

2.    创建值为 "First" 的文本节点

3.    把这个文本节点追加到 <edition> 元素

4.    <edition> 元素追加到第一个 <book> 元素

 

删除元素

removeChild() 方法删除指定的节点(或元素)。

下面的代码片段将删除第一个 <book> 元素中的第一个节点:

x=xmlDoc.getElementsByTagName("book")[0];

 

x.removeChild(x.childNodes[0]);

 

XML 数据岛实例

XML 文档绑定到 HTML 文档中的一个 <xml> 标签。id 属性定义数据岛的标识符,而 src 属性指向 XML 文件:

<html>

<body>

 

<xml id="cdcat" src="cd_catalog.xml"></xml>

 

<table border="1" datasrc="#cdcat">

<tr>

<td><span datafld="ARTIST"></span></td>

<td><span datafld="TITLE"></span></td>

</tr>

</table>

 

</body>

</html>

<table> 标签的 datasrc 属性把 HTML 表格绑定到 XML 数据岛。

<span> 标签允许 datafld 属性引用要显示的 XML 元素。在这个例子中,要引用的是 "ARTIST" "TITLE"。当读取 XML 时,会为每个 <CD> 元素创建相应的表格行。

 

 

"saveForm.asp" 文件是一个 ASP 页面,可循环遍表单域,并把它们的值存储在一个 XML 文件中:

<%
dim xmlDoc
dim rootEl,fieldName,fieldValue,attID
dim p,i
 
'如果有错误发生,不允许程序终止
On Error Resume Next
 
Set xmlDoc = server.CreateObject("Microsoft.XMLDOM")
xmlDoc.preserveWhiteSpace=true
 
'创建并向文档添加根元素
Set rootEl = xmlDoc.createElement("customer")
xmlDoc.appendChild rootEl
 
'循环遍历 Form 
for i = 1 To Request.Form.Count
  '除去表单中的 button 元素
  if instr(1,Request.Form.Key(i),"btn_")=0 then
    '创建 field  value 元素,以及 id 属性
    Set fieldName = xmlDoc.createElement("field")
    Set fieldValue = xmlDoc.createElement("value")
    Set attID = xmlDoc.createAttribute("id")
    '把当前表单域的名称设置为 id 属性的值
    attID.Text = Request.Form.Key(i)
    ' id 属性添加到 field 元素
    fieldName.setAttributeNode attID
    '把当前表单域的值设置为 value 元素的值
    fieldValue.Text = Request.Form(i)
    ' field 元素作为根元素的子元素进行添加
    rootEl.appendChild fieldName
    ' value 元素作为 field 元素的子元素进行添加
    fieldName.appendChild fieldValue
  end if
next
 
'添加 XML processing instruction
'并把它加到根元素之前
Set p = xmlDoc.createProcessingInstruction("xml","version='1.0'")
xmlDoc.insertBefore p,xmlDoc.childNodes(0)
 
'保存 XML 文件
xmlDoc.save "c:\Customer.xml"
 
'释放所有的对象引用
set xmlDoc=nothing
set rootEl=nothing
set fieldName=nothing
set fieldValue=nothing
set attID=nothing
set p=nothing
 
'测试是否有错误发生
if err.number<>0 then
  response.write("Error: No information saved.")
else
  response.write("Your information has been saved.")
end if
%>

注释:如果指定的 XML 文件名已经存在,那个文件会被覆盖!

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值