关于解析XML文件换行的问题

zhangwhhx 2014-12-24 10:22:52
有一个XML文件,名为c11_6.xml,内容如下:
<?xml version="1.0" encoding="UTF-8"?>
<!--xml文档程序名为c11_6.xml-->
<目录>
<书>
<书名>面向对象程序设计——Java </书名>
<作者>张白一,崔尚森</作者>
<出版社>西安电子科技大学出版社</出版社>
<价格>26.00</价格>
<出版日期>2006年1月</出版日期>
</书>
<书>
<书名>JSP实用案例教程 </书名>
<作者>冯燕奎,赵德奎 等</作者>
<出版社>清华大学出版社</出版社>
<价格>35.00</价格>
<出版日期>2004年5月</出版日期>
</书>
</目录>

用DOM解析c11_6.xml文档的Java程序为c11_6.java,其内容如下:

import org.w3c.dom.*; //XML的DOM实现
import java.io.*;
import javax.xml.parsers.*; //XML解析器接口

public class C11_6{
public static void main(String args[])
{
try
{
//创建一个解析器工厂对象factory
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
//对象builder代表了具体的DOM解析器
DocumentBuilder builder = factory.newDocumentBuilder();
/* builder的parse()方法接受一个XML文件名作为输入参数,
返回一个document对象,它包含了用builder解析XML文件生成的DOM文档。 */
//对document对象操作由DOM函数指定。
Document document = builder.parse(new File("C11_6.xml"));
//去掉XML文档中作为格式化内容的空白,而映射在DOM树中的不必要的Text Node对象。
document.normalize();
Element root=document.getDocumentElement(); //获得根元素
String rootName=root.getNodeName();
System.out.print("XML文件根节点的名字:"+rootName);
NodeList nodelist=root.getChildNodes(); //获得根元素的子节点列表
GetElement(nodelist);
}
catch(Exception e){ System.out.println(e);}
}
public static void GetElement(NodeList nodelist)
{ int size=nodelist.getLength();

for(int i=0;i<size;i++)
{ Node cnode = nodelist.item(i); //获得子节点列表中的第i个节点
if(cnode.getNodeType() == Node.TEXT_NODE)
{
Text textNode=(Text)cnode;
String content=textNode.getWholeText();
System.out.print(content);
}
if( cnode.getNodeType() == Node.ELEMENT_NODE)
{
Element elementNode=(Element)cnode;
String name=elementNode.getNodeName();
System.out.print(name+": ");
NodeList nodelist1=elementNode.getChildNodes(); //获得根元素的子节点列表
GetElement(nodelist1);
}
}
}
}
程序运行结果为:

XML文件根节点的名字:目录
书:
书名: 面向对象程序设计——Java
作者: 张白一,崔尚森
出版社: 西安电子科技大学出版社
价格: 26.00
出版日期: 2006年1月

书:
书名: JSP实用案例教程
作者: 冯燕奎,赵德奎 等
出版社: 清华大学出版社
价格: 35.00
出版日期: 2004年5月
但程序中有两条语句为: System.out.print(content); 及
System.out.print(name+": ");
都没有换行。请问输出 书名: 面向对象程序设计——Java后如何换行输出
作者: 张白一,崔尚森。
谢谢!
...全文
3073 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
barneyt 2016-01-13
  • 打赏
  • 举报
回复
使用myeclipse编写xml时候,使用其自动格式化功能呢,会添加空白节点,该节点在解析时候会实现自动换行,节点的type应该为#Text
zhangwhhx 2014-12-29
  • 打赏
  • 举报
回复
我是想问程序是怎么做到换行的。
跳蚤图 2014-12-26
  • 打赏
  • 举报
回复
你是想问程序是怎么做到换行的吧?
爱小天天 2014-12-26
  • 打赏
  • 举报
回复
你是理工的?
zhangwhhx 2014-12-25
  • 打赏
  • 举报
回复
可程序中没有System.out.println,如何换行输出呢。
跳蚤图 2014-12-25
  • 打赏
  • 举报
回复
System.out.println是换行输出

8,906

社区成员

发帖
与我相关
我的任务
社区描述
XML/XSL相关问题讨论专区
社区管理员
  • XML/XSL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧