1.获得dom(document)的方式?
答:SAXBuilder builder = new SAXBuilder();
this.dom = builder.build(repage.ServXml.class.getResource("news.xml"));
ServXml.java所在的路径和news.xml所在的路径一致,通过反射机制加载news.xml文件信息
测试源代码:
public class Test {
public static void main(String []args){
Document dom=null;
SAXBuilder builder = new SAXBuilder();
try {
//加载与ServXml.java在同一路径下的文件news.xml
dom = builder.build(repage.ServXml.class.getResource("news.xml"));
} catch (JDOMException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
System.out.print("news.size():"+dom.getRootElement().getChildren().size());
}
}
2.以下为Servlet处理输出xml格式的文本信息的代码:
Document doc = new Document();
response.setContentType("application/xml");//输出为范式良好的XML文档
..................
...组织document...
..................
XMLOutputter outputter = new XMLOutputter(Format.getPrettyFormat().setEncoding("ISO8859-1"));
outputter.output(doc,response.getWriter());
输出文本格式如下:
<list>
<currentPage>当前页数</currentPage>
<totalPage>总页数</totalPage>
<newslist>
<news id="书籍序号1">
<title>标题1</title>
<submittime>作者1</submittime>
</news>
<news id="书籍序号2">
<title>标题2</title>
<submittime>作者2</submittime>
</news>
</newslist>
</list>
3.Ajax接收获取的xml文本,解析以该文本:
var doc=xml_httpRequest.responseXML;
var currentPage=doc.getElementsByTagName("currentPage")[0].firstChild.data;//从xml文本读-当前页标
var totalPage=doc.getElementsByTagName("totalPage")[0].firstChild.data;//从xml文本读取-总页数
//读取书籍列表,
var newslist=doc.getElementsByTagName("news");
for(var i=0;i<newslist.length;i++){
var news=newslist[i];
var id=news.getAttribute("id");
var title=(news.childNodes[0].firstChild==null)?"":news.childNodes[0].firstChild.data;
var author=(news.childNodes[1].firstChild==null)?"":news.childNodes[1].firstChild.data;
}
(a)getElementsByTagName:返回的是一个标签组成的数组
例1:var doc=xml_httpRequest.responseXML;
var newslist=doc.getElementsByTagName("news");//返回由多个news标签组成的数组
(b)数组名[i]: 得到第i个标签
例1:var doc=xml_httpRequest.responseXML;
var newslist=doc.getElementsByTagName("news");//返回由多个news标签组成的数组
var news=newslist[0];//得到第1个标签news
(c)数组名[i].firstChild.data:得到标签数组内的第i个标签内的文本
例1:var currentPage=doc.getElementsByTagName("currentPage")[0].firstChild.data
(d) news.childNodes[i].firstChild.data:得到一个标签news的第i个子标签间的文本
例2:
<news id="书籍序号1">
<title>标题1</title>
<submittime>作者1</submittime>
</news>
具体过程如下:
var newslist=doc.getElementsByTagName("news");//返回由多个news标签组成的数组
var news=newslist[0];//得到第1个标签news
var title=news.childNodes[0].firstChild.data;//得到一个标签内的第1个子标签间的文本
ajax分页显示
最新推荐文章于 2021-08-05 20:01:06 发布