一个DOM的问题,不知道是怎么回事

blackcat110 2002-12-04 05:06:01
我用往一个XML文件中增加子节点,怎么不行
源程序如下:
public boolean createQueryXml(String filePathName){
try{
File file = new File(filePathName);
if(!file.exists())return false;//不存在XML文件
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder=factory.newDocumentBuilder();
Document doc=builder.parse(filePathName);
doc.normalize();
System.out.println("print xml information start...");
System.out.println("sqlString--"+sqlString);
System.out.println("sqlName--"+sqlName);
System.out.println("sql fieldNameV--"+field_nameV.size());
System.out.println("sql fieldtypeV--"+field_typeV.size());
System.out.println("sql fieldaliasV--"+field_aliasV.size());
System.out.println("datasouce--"+dataSource);
System.out.println("driver--"+driverId);
System.out.println("userName--"+userName);
//创建节点开始
Element select = doc.createElement("select");
Text textseg;
//---增加一个节点要4行代码
Element name = doc.createElement("name");
textseg = doc.createTextNode(sqlName);
name.appendChild(textseg);
select.appendChild(name);
Element sql = doc.createElement("sql");
textseg = doc.createTextNode(sqlString);
sql.appendChild(textseg);
select.appendChild(sql);

Element field = doc.createElement("field");
if(field_nameV != null){ // 给field节点增加field_name
Element field_name = null;
for(int i=0;i<field_nameV.size();i++){
field_name = doc.createElement("fieldname");
textseg = doc.createTextNode((String)field_nameV.get(i));
field_name.appendChild(textseg);
}
field.appendChild(field_name);
}
if(field_typeV != null){ // 给field节点增加field_type
Element field_type = null;
for(int i=0;i<field_typeV.size();i++){
field_type = doc.createElement("fieldtype");
textseg = doc.createTextNode("java.lang."+(String)field_typeV.get(i));
field_type.appendChild(textseg);
}
field.appendChild(field_type);
}
if(field_aliasV != null){ // 给field节点增加field_alias,--如果字段没有别名则为空
Element field_alias = null;
for(int i=0;i<field_aliasV.size();i++){
field_alias = doc.createElement("fieldalias");
textseg = doc.createTextNode((String)field_aliasV.get(i));
field_alias.appendChild(textseg);
}
field.appendChild(field_alias);
}
select.appendChild(field);

Element url = doc.createElement("url");
textseg = doc.createTextNode(dataSource);
url.appendChild(textseg);
select.appendChild(url);

Element driver = doc.createElement("driver");
textseg = doc.createTextNode(driverId);//仅是一数字
driver.appendChild(textseg);
select.appendChild(driver);

Element user_Name = doc.createElement("username");
textseg = doc.createTextNode(userName);
user_Name.appendChild(textseg);
select.appendChild(user_Name);

Element pass_word = doc.createElement("password");
textseg = doc.createTextNode(passWord);
pass_word.appendChild(textseg);
select.appendChild(pass_word);
//---创建节点完毕。
doc.getDocumentElement().appendChild(select);//把创建的Element和其文本内容添加到DOM树中
System.out.println("doc object is---"+doc);
//写成xml文件
TransformerFactory tFactory =TransformerFactory.newInstance();
Transformer transformer = tFactory.newTransformer();
if(transformer == null)System.out.println("transformer object is..."+transformer);
DOMSource source = new DOMSource(doc);
System.out.println("source---"+source+":::--filePathName--"+filePathName);
//Transformer transformer = tFactory.newTransformer(source);
//System.out.println("transformer object is..."+transformer);
StreamResult result = new StreamResult(file);
System.out.println("result---"+result);
transformer.transform(source,result); //用XSLT把DOM树输出
}catch(Exception ex){
ex.printStackTrace();
return false;
}
return true;
}

执行后的抛出异常如下:

sqlName--12
sql fieldNameV--4
sql fieldtypeV--4
sql fieldaliasV--4
datasouce--oradb
driver--0
userName--zhongan
doc object is---[#document: null]
transformer object is...null
source---javax.xml.transform.dom.DOMSource@3da850:::--filePathName--E:\reportXml
\webapp\xmlFile\query.xml
result---javax.xml.transform.stream.StreamResult@751e5c
java.lang.NullPointerException
at com.china317.report.reportManager.createQueryXml(reportManager.java:2
10)
at com.china317.report.servlet.buildSelectServlet.doGet(buildSelectServl
et.java:117)
at com.china317.report.servlet.buildSelectServlet.doPost(buildSelectServ
let.java:15)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:165)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:103)
at com.caucho.server.http.FilterChainServlet.doFilter(FilterChainServlet
.java:82)
at com.caucho.server.http.Invocation.service(Invocation.java:288)
at com.caucho.server.http.CacheInvocation.service(CacheInvocation.java:1
32)
at com.caucho.server.http.ServletServer.serviceTop(ServletServer.java:93
7)
at com.caucho.server.http.HttpRequest.handleRequest(HttpRequest.java:213
)
at com.caucho.server.http.HttpRequest.handleConnection(HttpRequest.java:
158)
at com.caucho.server.TcpConnection.run(TcpConnection.java:140)
at java.lang.Thread.run(Thread.java:484)
为什么transformer.transform(source,result)就不起作用呢?
请高手指点。。。

...全文
31 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
salute 2002-12-04
  • 打赏
  • 举报
回复
transformer.transform(source,result)
这个不是XML文件的输出,是XML的转换输出.

81,114

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧