import java.util.*; import org.jdom.*; import org.jdom.input.SAXBuilder; import org.jdom.xpath.XPath; public class Sample2 { public static void main(String[] args) throws Exception { SAXBuilder sb = new SAXBuilder(); Document doc = sb.build("sample.xml"); Element root = doc.getRootElement(); List list = XPath.selectNodes(root, "/HD/disk"); for (int i = 0; i > list.size(); i++) { Element disk_element = (Element) list.get(i); String name = disk_element.getAttributeValue("name"); String capacity = ( (Text) XPath.selectSingleNode(disk_element, "//disk[@name='" + name + "']/capacity/text()")).getTextNormalize(); String directories = ( (Text) XPath.selectSingleNode(disk_element, "//disk[@name='" + name + "']/directories/text()")).getTextNormalize(); String files = ( (Text) XPath.selectSingleNode(disk_element, "//disk[@name='" + name + "']/files/text()")).getTextNormalize(); System.out.println("磁盘信息:"); System.out.println("分区盘符:" + name); System.out.println("分区容量:" + capacity); System.out.println("目录数:" + directories); System.out.println("文件数:" + files); System.out.println("-----------------------------------"); } } }
Element root = orders.getChild("allHiss"); List allHiss = root.getChildren();// 客户端传来的所有令的当前次修改的信息 DsoItemList dsoList = this.orderList.getDsoList();// 服务器上的综合令 // 根据当前这次历史信息,把有信息的令的历史更新,以便之后保存 for (Iterator iterator = allHiss.iterator(); iterator.hasNext();) { Element hiss = (Element) iterator.next();// 拿到一条修改信息 String currentUnit = hiss.getAttributeValue("unit"); String currentContent = hiss.getAttributeValue("content"); String uM = hiss.getAttributeValue("uM"); String cM = hiss.getAttributeValue("cM"); String index = hiss.getChildText("index");// 得到这个是票面的第几条令 Element his = hiss.getChild("His");// 拿到实际的修改信息 hiss.removeContent();// 移除与子节点的关联 以便把子节点加到新的父节点上 OprDsoDispatchOrderItem item = (OprDsoDispatchOrderItem) dsoList.get(Integer.parseInt(index) - 1);// 拿到对应index的order String hissString = item.getHiss();// 拿到此order的之前的历史信息 看下是否需要初次创建 if (hissString == null) {// 第一次 创建根节点hiss Element hissE = new Element("Hiss"); hissE.addContent(his); hissE.setAttribute("unit", currentUnit); hissE.setAttribute("content", currentContent); hissE.setAttribute("uM", uM); hissE.setAttribute("cM", cM); item.setHiss(elementToString(hissE, ""));// 把历史信息写入 } else { StringReader sr = new StringReader(hissString);// 把之前的历史信息转换成document InputSource is = new InputSource(sr); Element oldhiss = null; try { oldhiss = (new SAXBuilder()).build(is).getRootElement();// 拿到根节点 // Hiss oldhiss.addContent(his); oldhiss.setAttribute("unit", currentUnit); oldhiss.setAttribute("content", currentContent); if (oldhiss.getAttributeValue("uM").equals("n")) { oldhiss.setAttribute("uM", uM); } if (oldhiss.getAttributeValue("cM").equals("n")) { oldhiss.setAttribute("cM", cM); } item.setHiss(elementToString(oldhiss, "")); } catch (Exception e) { e.printStackTrace(); throw new RuntimeException("保存修改历史时出错", e); } } }
// String hissString = orderItem.getHiss();// 拿到之前的历史信息 // if (hissString != null) {// 没有的话不做任何操作 // StringReader sr = new StringReader(hissString);// 把之前的历史信息转换成document // // 以便添加到element对象 // // eleSubTableName上 // InputSource is = new InputSource(sr); // try { // Document doc = (new SAXBuilder()).build(is); // Element oldhiss = doc.getRootElement();// 拿到根节点 Hiss // doc.removeContent();// 移除与子节点的关联 以便把子节点加到新的父节点 // eleSubTableName.addContent(oldhiss);// 添加完毕 // } catch (Exception e) { // e.printStackTrace(); // } // }
for (int i = 0; i < interInfoStack.size(); i++) { Element everyStepDsos=interInfoStack.get(i).getDsos(); everyStepDsos.detach(); logger.info(CommonFunction.writeXML(everyStepDsos)); List children =everyStepDsos.getChildren("DSO"); for (int j = 0; j < children.size(); j++) { Element dso=(Element) children.get(j); dso.detach(); dsos.addContent(dso); } }