XML操作实验
实验内容:
注意:以下代码均只支持IE,请在IE浏览器或者QQ浏览器兼容模式下使用。
如需修改,请自行修改读取XML文件的函数loadXML()
1编写程序,解析score.xml文件,要求输出的结果如图1所示。
score.xml
<?xml version="1.0" encoding="UTF-8"?>
<score>
<name>
<alias>张三</alias>
<math>89</math>
<english>90</english>
</name>
<name>
<alias>李四</alias>
<math>92</math>
<english>87</english>
</name>
<name>
<alias>王五</alias>
<math>95</math>
<english>90</english>
</name>
</score>
代码:
//请自行添加到HTML文件进行相应尝试
<script>
window.onload=function useScoreXml(){
var xmlFile="./score.xml";
var xmlDoc=loadXML(xmlFile);
var scoreList=xmlDoc.documentElement.getElementsByTagName("name");
document.write("<table>");
for(var i=0;i<scoreList.length;i++)
{
document.write("<tr>");
var attList=scoreList[i].childNodes;
for(var j=0;j<attList.length;j++)
{
document.write("<td>"+attList[j].text+"</td>");
}
document.write("</tr>");
}
}
//读取XML文件,只支持IE
function loadXML(xmlFile) {
var xmlDoc;
xmlDoc= new ActiveXObject("Microsoft.XMLDOM");
xmlDoc.async = false;
xmlDoc.load(xmlFile);
return xmlDoc;
}
</script>
实际运行结果:
2、编写程序,修改下面的XML文件Book.xml,要求:
(1)为每一个book元素添加一个author子元素,元素内容自定。
(2)修改title元素的值,在文本内容的后面添加文本“(电子工业出版社)”。
例如:
<title> Java面向对象编程</title> 变为:
<title> Java面向对象编程(电子工业出版社)</title>
(3)删除原有的第三个元素。
(4)为每一个book元素添加一个category属性子元素,元素内容自定,如:
(5)使用DOM接口,javascript语言实现。
book.xml
<?xml version="1.0" encoding="utf-8" ?>
<books>
<book>
<title>Java面向对象编程</title>
<author>孙卫琴</author>
</book>
<book>
<title>JSP动态网页编程技术</title>
<author>李伟民</author>
</book>
<book>
<title>精通Hibernate</title>
<author>刘洋</author>
</book>
</books>
代码:
//请添加到相应的HTML文件进行尝试
<script>
window.onload=function useBookXml(){
var xmlFile="./Book.xml";
var xmlDoc=loadXML(xmlFile);
var x=xmlDoc.documentElement;
var bookList=xmlDoc.getElementsByTagName("book");
for(var i=0;i<bookList.length;i++)
{
//为每一个book元素添加一个author子元素
var newNode=xmlDoc.createElement("author");
var textNode=xmlDoc.createTextNode("The Second Author Bai");
newNode.appendChild(textNode);
bookList[i].appendChild(newNode);
//修改title元素的值
// var NewNode=xmlDoc.createElement("book");
var newtextNode=xmlDoc.getElementsByTagName("title")[i].text+"(电子工业出版社)";
// var newTitle=xmlDoc.createElement("title");
// newTitle.appendChild(newtextNode);
// NewNode.appendChild(newTitle);
bookList[i].childNodes[0].text=newtextNode;
// x.replaceChild(NewNode,y);
//删除第三个元素
if(i==2){
var y=bookList[i];
y.parentNode.removeChild(y);
}
//添加属性
bookList[i].setAttribute("category","computer");
}
//重新加载数组
var bookList=xmlDoc.getElementsByTagName("book");
document.write("<table>");
for(var i=0;i<bookList.length;i++)
{
document.write("<tr>");
var attList=bookList[i].childNodes;
for(var j=0;j<attList.length;j++)
{
document.write("<td>"+attList[j].text+"</td>");
}
document.write("<td>"+"category属性:"+bookList[i].getAttribute("category")+"</td>");
document.write("</tr>");
}
}
//读取XML文件,只支持IE
function loadXML(xmlFile) {
var xmlDoc;
xmlDoc= new ActiveXObject("Microsoft.XMLDOM");
xmlDoc.async = false;
xmlDoc.load(xmlFile);
return xmlDoc;
}
</script>
运行结果: