使用dom4j递归读取xml文件和写入代码y.xml文件中的内容public void read() throws IOException, DocumentException { // 创建saxReader对象 SAXReader reader = new SAXReader(); // 通过read方法读取一个文件 转换成Document对象 Document document = reader.read(new File("./db/y.xml")); //获取根节点元素对象 Element node = document.getRootElement(); //遍历所有的元素节点 listNodes(node); //通过路径选择节点,如果xml文件中没有该路径,则返回null Element element1 =(Element)document.selectSingleNode("/四大名著") ; //通过路径选择节点,如果xml文件中没有该路径,则返回创建一个节点 Element element2=DocumentHelper.makeElement(document,"/四大名著/水浒传/人物"); //添加CDATA区域 elemen2t.addCDATA("林冲,武松"); //获取该节点的父节点 Element element3=element.getParent(); element1.add(element2); // 写入到一个新的文件中 writer(document); } public void listNodes(Element node){ if(node==null){ System.out.println("null"); return; } System.out.println("当前节点的路径::" + node.getPath()); //获取字节点 List
elements=node.elements(); for(Element element:elements){ if(element.isTextOnly()){ System.out.println("当前节点的名称:" + element.getName()+"---- "+element.getText()); } else { listNodes(element); } } } public void writer(Document document) throws IOException { OutputFormat format = format(); // 创建XMLWriter对象,指定了写出文件及编码格式 XMLWriter writer = new XMLWriter(new FileOutputStream("./db/y.xml"), format); // 写入 writer.write(document); // 立即写入 writer.flush(); // 关闭 *** 作 writer.close(); } /** * 文件格式化 * * @return OutputFormat */ public OutputFormat format() { OutputFormat format = new OutputFormat(); format.setIndentSize(4); format.setNewlines(true); format.setTrimText(true); format.setPadText(true); format.setEncoding("UTF-8"); return format; } <四大名著> <西游记> <作者>吴承恩1作者> <作者>吴承恩2作者> <朝代>明朝朝代> 西游记> <红楼梦> <作者>曹雪芹作者> 红楼梦> 四大名著>
Xml文件路径验证器自己记录的一些笔记,内容如有不对请指正/** * 验证xPath语法是否有效 * * @param path xPath路径 * @return true/false */ public static Boolean xPathVerify(String path) { XPathFactory factory = XPathFactory.newInstance(); XPath xPath = factory.newXPath(); try { xPath.compile(path); } catch (XPathExpressionException e) { return false; } return true; }
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)