用Jdom向web.xml添加节点出错

问题描述

想通过Jdom向web.xml文件添加servlet的配置信息。如:<servlet> <servlet-name>xxx</servlet-name> <servlet-class>com.sdt.action.xxx</servlet-class></servlet><servlet-mapping> <servlet-name>xxx</servlet-name> <url-pattern>/xxx</url-pattern></servlet-mapping>但是总是报这样的错误:Exception in thread "main" org.jdom.IllegalAddException: The Content already has an existing parent "servlet"我的代码如下:import java.io.File;import java.io.FileOutputStream;import org.jdom.Document;import org.jdom.Element;import org.jdom.Parent;import org.jdom.input.SAXBuilder;import org.jdom.output.XMLOutputter;/**向web.xml中增加Servlet配置 * * @author liujia */public class DomUtil { public static void add(String tableName) throws Exception { String className = "PersonServlet" ; String servletPackage = "com.sdt.servlet" ; String fileName = "d:/netbeans/workday01/src/test/javaeye/web.xml" ; File f = new File(fileName) ; SAXBuilder builder = new SAXBuilder() ; Document doc = builder.build(f) ; Element root = doc.getRootElement() ; System.out.println("root: " + root.getName()); Element servlet = new Element("servlet") ; Element servletMapping = new Element("servlet-mapping") ; Element servletName = new Element("servletName") ; Element servletClass = new Element("servletClass") ; Element urlPattern = new Element("urlPattern") ; servletClass.setText(servletPackage + "." + className) ; servletName.setText("className") ; urlPattern.setText("/" + className) ; servlet.addContent(servletName) ; servlet.addContent(servletClass) ; servletMapping.addContent(servletName) ; servletMapping.addContent(urlPattern) ; Parent p = root.getParent(); p.removeContent(root); root.addContent(servlet) ; root.addContent(servletMapping) ; XMLOutputter out = new XMLOutputter() ; out.setFormat(out.getFormat().setEncoding("GBK")) ; out.output(doc, new FileOutputStream(new File(fileName),true)) ; } public static void main(String[] args) throws Exception { add("t_person") ; }}希望大家能帮帮我,实在是解决不了了。 问题补充:谢谢大家的回答,根据cmyx2008love的意见,修改后确实可以生成,但是生成的代码是这样的:<servlet xmlns=""><servletName>PersonServlet</servletName><servletClass>com.sdt.servlet.PersonServlet</servletClass></servlet><servlet-mapping xmlns=""><servletName>PersonServlet</servletName><urlPattern>/PersonServlet</urlPattern></servlet-mapping>servlet和servlet-mapping节点都有属性了,怎么才能去掉呢?

解决方案

第26行代码 Element servlet = new Element("servlet") ; servlet节点不能共享,只能是一个节点的子节点,不能即是a节点的子节点又是b节点的子节点也就是说解决你的问题在于第38行代码servletMapping.addContent(servletName) ; 处修改为 servletMapping.addContent( new Element("servletName")) ; 另外42行处 p.removeContent(root); 干什么吧根节点给删除了?如果跟节点删除了,没有根节点那么document就不完整了,你后面也没有显示的增加,所以,是你的思路的问题;再好好的整理一下!
解决方案二:
楼主竟然运行时改web.xml?我out了 还是楼主碉堡了
解决方案三:
这个功能有用吗?web.xml不是在服务器启动的时候加载的吗?

时间: 2024-12-23 03:25:08

用Jdom向web.xml添加节点出错的相关文章

修改web.xml后tomcat出错

问题描述 修改web.xml后tomcat出错 第一个启动是没错的,但是之后我发现jsp提交数据出现错误HTTP Status 405 - HTTP method POST is not supported by this URLtype Status report message HTTP method POST is not supported by this URL description The specified HTTP method is not allowed for the r

PHP往XML中添加节点的方法

 这篇文章主要介绍了PHP往XML中添加节点的方法,涉及php操作XML文件的技巧,具有一定参考借鉴价值,需要的朋友可以参考下     本文实例讲述了PHP往XML中添加节点的方法.分享给大家供大家参考.具体方法如下: 1. contacts.xml代码 代码如下: <contact id="43956"> <personal> <name> <first>J</first> <middle>J</middl

PHP往XML中添加节点的方法_php技巧

本文实例讲述了PHP往XML中添加节点的方法.分享给大家供大家参考.具体方法如下: 1. contacts.xml代码 复制代码 代码如下: <contact id="43956">      <personal>           <name>                <first>J</first>                <middle>J</middle>             

config-eclipse中,添加web.xml后,tomcat报错。

问题描述 eclipse中,添加web.xml后,tomcat报错. The Tomcat server configuration at ServersTomcat v7.0 Server at localhost-config is missing. Check the server for errors. 解决方案 Tomcat v7.0 Server没启动吧

动态-android的问题:怎么在已有的xml文件添加节点

问题描述 android的问题:怎么在已有的xml文件添加节点 在论坛上看到了同样的问题,没有解答,直接借用内容了. 如图,我想动态添加button 怎么实现? 解决方案 照抄原有button,修改name其他的修改自己看着办,都一样的 解决方案二: 动态添加button,是想在代码中实现控件的增加?如果在在 XML 中 Copy/Paste 之间内容,然后修改控件的姓名和ID就可以了,当然其它的也能修改.

javaee-在开发ssh框架的web应用beans.xml文件中出错,求大神解救

问题描述 在开发ssh框架的web应用beans.xml文件中出错,求大神解救 在开发ssh框架的web应用beans.xml文件中出错,求大神解救: 错误::Class 'org.apache.commons.dbcp.BasicDataSource' not found Class 'org.springframework.orm.hibernate3.LocalSessionFactoryBean' not found 1.以下是代码 xmlns:xsi="http://www.w3.or

服务器-struts2在web.xml中添加支持后访问所有页面报404错误,什么原因?

问题描述 struts2在web.xml中添加支持后访问所有页面报404错误,什么原因? struts2在web.xml中添加支持后访问所有页面报404错误,本地测试无任何问题,上传服务器就报所有页面404. web.xml struts.xml 运行后 解决方案 上传服务器之后,看看是不是请求IP,或者端口错了 解决方案二: 看看启动服务器报错没.估计你服务器在启动时就报错了 解决方案三: 看看服务器上jsp页面的路径对不对 解决方案四: 这情况一般是 启动服务器 然后就报错了... 找找看

在web.xml中添加metadata-complete=&amp;amp;quot;true&amp;amp;quot;有什么作用?

问题描述 在web.xml中添加metadata-complete="true"有什么作用? 解决方案 http://www.ibm.com/developerworks/cn/java/j-lo-servlet30/

web xml-Web 项目中web.xml的配置有什么原则么有,怎么老是出错。求指点

问题描述 Web 项目中web.xml的配置有什么原则么有,怎么老是出错.求指点 严重: Parse error in application web.xml file at jndi:/localhost/TestStruts/WEB-INF/web.xml com.sun.org.apache.xerces.internal.impl.io.MalformedByteSequenceException: Invalid byte 2 of 2-byte UTF-8 sequence. at