首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >XML_DOM_DON'T_PARSE_CREATE_ERROR_java.lang.NullPointerException

XML_DOM_DON'T_PARSE_CREATE_ERROR_java.lang.NullPointerException
EN

Stack Overflow用户
提问于 2014-02-20 21:22:38
回答 1查看 28关注 0票数 0

当我试图解析一个XML,但是XML不完整时,我得到了"java.lang.NullPointerException“。

下面是代码

代码语言:javascript
运行
复制
import java.io.File;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.Statement;

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.transform.OutputKeys;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;

import org.w3c.dom.Document;
import org.w3c.dom.Element;

public class Read {


public static void main(String[] args) {

        String tableName = "myTable";
        String query = ("select * FROM " + tableName);
  try {
    Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");


    java.sql.Connection conn =  DriverManager
            .getConnection("jdbc:sqlserver://localhost:1433;databaseName=myDatabase;user=myUser;password=myPassword");

    Statement state = conn.createStatement();
    ResultSet result = state.executeQuery(query);
    ResultSetMetaData resultMeta = result.getMetaData();

    DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance();
    DocumentBuilder docBuilder = docFactory.newDocumentBuilder();   


    int cpt=1;
    String [][]d ;
    d = new String [1000][1000];
    d[0][0]= new String("test");
    d[0][1]=new String ("test");
    while(result.next()){         
      for(int i = 1; i <= resultMeta.getColumnCount(); i++)
        {
          if( result.getString(i)== null)
          { d[cpt][i]= new String(" ");}
          else
                {   String  res =result.getString(i);
                    d[cpt][i]= new String (res);
                }
      }

      cpt=cpt+1;
    } 

        //Element Table Name
    Document doc = docBuilder.newDocument();

    Element p_tableName = doc.createElement(tableName);
    doc.appendChild(p_tableName);


for(int j=1;j<= 15;j++)

        {

        Element p_object = doc.createElement("Object");
        p_tableName.appendChild(p_object);

            for(int i=1;i <= resultMeta.getColumnCount() ;i++)
            {

                Element nomChamps = doc.createElement(resultMeta.getColumnName(i));
                nomChamps.appendChild(doc.createTextNode(d[j][i]));
                p_object.appendChild(nomChamps);
            }
        }   



        Transformer tf = TransformerFactory.newInstance().newTransformer();
        //Format  XML 
        tf.setOutputProperty(OutputKeys.INDENT, "yes");
        tf.setOutputProperty(OutputKeys.METHOD, "xml");
        tf.setOutputProperty(OutputKeys.ENCODING, "UTF-8");
        tf.setOutputProperty("{http://xml.apache.org/xslt}indent-amount", "4");

        DOMSource source = new DOMSource(doc);
        StreamResult res = new StreamResult(new File("D:\\test/file2.xml"));
            **//I've got a problem whit this next line;** 
        **tf.transform(source, res);**



    System.out.println("ACTION COMPLETE !!");
    result.close();
    state.close();

  } catch (Exception e) {
    e.printStackTrace();

  }      

  }
}

使用"tf.transform(source,res)“,xml被创建了,但是没有完成,我得到了一个错误,但是如果我删除了这一行,错误就会离开,并且我的XML也不会被创建。

感谢您的帮助

EN

回答 1

Stack Overflow用户

发布于 2014-02-20 21:35:54

您可以使用错误侦听器来管理这一点,如下所示:

代码语言:javascript
运行
复制
tf.setErrorListener(new ErrorListener() {
            @Override
            public void warning(TransformerException exception) throws TransformerException {
                exception.printStackTrace();
            }

            @Override
            public void error(TransformerException exception) throws TransformerException {
                exception.printStackTrace();
            }

            @Override
            public void fatalError(TransformerException exception) throws TransformerException {
                exception.printStackTrace();
            }
        } );
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21909111

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档