预习Dom4J之:把XML输出到Java控制台
2017-08-31 19:42
267 查看
结果:
准备:
xml文件
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE Students [
<!ELEMENT Students (Student*)>
<!ELEMENT Student (Name,Age)>
<!ATTLIST Student id CDATA #REQUIRED>
<!ATTLIST Student remark CDATA #IMPLIED>
<!ELEMENT Name (#PCDATA)>
<!ELEMENT Age (#PCDATA)>
]>
<Students>
<Student id="s001" remark="帅哥">
<Name>洛清风</Name>
<Age>18</Age>
</Student>
<Student id="s002">
<Name>穆修杉</Name>
<Age>19</Age>
</Student>
</Students>
开始:
1)导入Dom4J到Java工程
2)设计好打印xml到控制台的方法
/**
* <p>Title:printXML</p>
* <p>Description:打印xml</p>
* @param elm 需要打印的xml
* @param indent 首次缩进倍数
*/
public static void printXML(Element elm,int indent){
//缩进字符串
String indentStr=" ";
//打印缩进
for(int i=0;i<indent;i++){
System.out.print(indentStr);
}
//得到该节点子节点的集合
List nodes=elm.elements();
//获得其所有属性
List attrs=elm.attributes();
StringBuffer attrStr=new StringBuffer("");
if(attrs.size()>0){
for (Iterator it = attrs.iterator(); it.hasNext();){
Attribute attr=(Attribute)it.next();
attrStr.append(" "+attr.getName()+"=\""+attr.getText()+"\"");
}
}
//如果有子节点则换行,没有子节点不换行
String enterStr=(nodes.size()<=0)?"":"\n";
//得到标签的内容
String elmStr=elm.getText();
//打印前标签
System.out.print("<"+elm.getName()+attrStr+">"+elmStr+enterStr);
//遍历子节点集合 并递归这个子节点
for (Iterator it = nodes.iterator(); it.hasNext();){
printXML((Element) it.next(),indent+1);
}
//如果有孩子节点 后标签不缩进
if(nodes.size()>0){
for(int i=0;i<indent;i++){
System.out.print(indentStr);
}
}
//打印后标签
System.out.println("</"+elm.getName()+">");
}
3)在主函数获得需要打印的xml并调用上述方法
public static void main(String
7dfb
[] args) {
SAXReader reader=new SAXReader();
Document document=null;
try {
document=reader.read(new File(System.getProperty("user.dir")+File.separator+"xml"+File.separator+"Students.xml"));
} catch (DocumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
printXML(document.getRootElement(),0);
}
准备:
xml文件
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE Students [
<!ELEMENT Students (Student*)>
<!ELEMENT Student (Name,Age)>
<!ATTLIST Student id CDATA #REQUIRED>
<!ATTLIST Student remark CDATA #IMPLIED>
<!ELEMENT Name (#PCDATA)>
<!ELEMENT Age (#PCDATA)>
]>
<Students>
<Student id="s001" remark="帅哥">
<Name>洛清风</Name>
<Age>18</Age>
</Student>
<Student id="s002">
<Name>穆修杉</Name>
<Age>19</Age>
</Student>
</Students>
开始:
1)导入Dom4J到Java工程
2)设计好打印xml到控制台的方法
/**
* <p>Title:printXML</p>
* <p>Description:打印xml</p>
* @param elm 需要打印的xml
* @param indent 首次缩进倍数
*/
public static void printXML(Element elm,int indent){
//缩进字符串
String indentStr=" ";
//打印缩进
for(int i=0;i<indent;i++){
System.out.print(indentStr);
}
//得到该节点子节点的集合
List nodes=elm.elements();
//获得其所有属性
List attrs=elm.attributes();
StringBuffer attrStr=new StringBuffer("");
if(attrs.size()>0){
for (Iterator it = attrs.iterator(); it.hasNext();){
Attribute attr=(Attribute)it.next();
attrStr.append(" "+attr.getName()+"=\""+attr.getText()+"\"");
}
}
//如果有子节点则换行,没有子节点不换行
String enterStr=(nodes.size()<=0)?"":"\n";
//得到标签的内容
String elmStr=elm.getText();
//打印前标签
System.out.print("<"+elm.getName()+attrStr+">"+elmStr+enterStr);
//遍历子节点集合 并递归这个子节点
for (Iterator it = nodes.iterator(); it.hasNext();){
printXML((Element) it.next(),indent+1);
}
//如果有孩子节点 后标签不缩进
if(nodes.size()>0){
for(int i=0;i<indent;i++){
System.out.print(indentStr);
}
}
//打印后标签
System.out.println("</"+elm.getName()+">");
}
3)在主函数获得需要打印的xml并调用上述方法
public static void main(String
7dfb
[] args) {
SAXReader reader=new SAXReader();
Document document=null;
try {
document=reader.read(new File(System.getProperty("user.dir")+File.separator+"xml"+File.separator+"Students.xml"));
} catch (DocumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
printXML(document.getRootElement(),0);
}
相关文章推荐
- 【java】xml文件表建立及读取环境搭建并采用DOM4J完成XML文件导入到数据库
- 用Jersey构建RESTful服务-JAVA对象转成XML/Json输出
- java控制台输出数字金字塔示例分享
- java DOM4J 读取XML实例代码
- java dom4j解析xml
- java中四种操作(DOM、SAX、JDOM、DOM4J)xml方式详解与比较
- Java学习笔记1:在控制台输出金字塔
- Java输出xml文件——DOM法写入《Dota…
- Java格式化输出 Dom4j转义字符问题
- 【java基础之代码】【将系统时间以给定的格式输出到控制台】
- Java中用dom4j解析XML信息连接Embedded derby数据库
- 【Java】Eclipse新建的Java文件自动生成主函数、控制台输出行数不再受限制
- 在Java程序中截获控制台输出
- Java DOM4J读取XML
- java 使用 dom4j 解析 XML
- Java:XML篇,使用DOM4J读取并解析XML
- Java之xml文件解析四(DOM4J方式解析xml文件)
- JAVA创建XML文件(三)---DOM4J方式创建XML
- java学习之dom4j 对 xml的读取
- JAVA 基于dom4j创建XML文档