dom4j 将doc作为 asXml 输出的话,会自动把格式排好。
解决方案 »
- spring集成jta中设置readonly
- 求hibernate spring整合的增删改查
- 高分求孙卫琴的《精通Struts:基于MVC的Java Web设计与开发》随书光盘
- java.sql.SQLException: ORA-02292: 违反完整约束条件 (PADMIN.FK_P_TRANS__RELATION__P_FEE) - 已找到子记录
- TOMCAT:Cannot get a connection, pool exhausted
- 关于验证
- html转xml
- 这段代码有一些不理解,为什么不出错呢?
- struts中的form提交问题
- 用Struts的朋友进来看一下这个问题啊~~急
- 关于Struts与Struts2的学习问题。
- Resourcebundle Editor
顶!
今天用了
public void treeWalk(Document document) {
treeWalk( document.getRootElement() );
} public void treeWalk(Element element) {
for ( int i = 0, size = element.nodeCount(); i < size; i++ ) {
Node node = element.node(i);
if ( node instanceof Element ) {
treeWalk( (Element) node );
}
else {
// do something....
}
}
}
这个递归方法,发现遍历出来的节点名字都是重复的
用递归取name的名字,判断是否有子节点就可以了。
有方法可以取子节点和父节点的
一、准备
import org.jdom.Document;
import org.jdom.Element;
import org.jdom.input.SAXBuilder;①
String path = xml文档路径;
②
SAXBuilder builder = new SAXBuilder();
Document doc = builder.build(path);
③得到根节点:
Element e = doc.getRootElement();
⑤⑥⑦⑧⑨
二、操作
(1)读取
1、
①得到指定子节点:
e.getChild("节点名");
②得到指定子节点内容:
e.getChild(节点名).getValue();
或
e.getChildText(节点名);
③得到指定属性值:
e.getAttributeValue(属性名);
④遍历子节点:
java.util.List l = e.getChildren(); //得到所有子节点列
或
java.util.List l = e.getChildren(); //得到指定名字的子节点列
遍历:
for (int i=0; i<l.size(); i++) {
Element e2 = (Element)l.get(i);
ArrayList tl = new ArrayList();
tl.add(e2.getChildText("url"));
tl.add(e2.getChildText("sm"));
list.add(tl);
}(2)编辑
e.getChild(节点名).setText(内容);(3)添加
①新建节点
Element newE = new Element(节点名);
Element sm = new Element(节点名);
②为节点添加内容
sm.addContent(内容);
③将一个节点加入另一个节点
newE.addContent(sm);
root.addContent(newE);
④为节点添加属性及值
newE.setAttribute("id",id);(4)删除
删除当前节点:
e.getParentElement().removeContent(e);三、写文件
import org.jdom.output.Format;
import org.jdom.output.XMLOutputter;XMLOutputter outputter = new XMLOutputter(Format.getPrettyFormat().setEncoding("gb2312")); //设制编码为gb2312以写入中文
java.io.OutputStream outStream = new java.io.FileOutputStream(path);
outputter.output(doc, outStream);
outStream.flush();
outStream.close();