Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java XML转换器_Java_Xml_Transformer - Fatal编程技术网

Java XML转换器

Java XML转换器,java,xml,transformer,Java,Xml,Transformer,我一直在尝试创建一个XML文档,但不断出现空指针异常错误,我花了几个小时试图找出原因 路径是正确的,因为它在读取文件时起作用 主要内容: WriteConfig: import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.parsers.ParserConfigurationException; import javax.xml.trans

我一直在尝试创建一个XML文档,但不断出现空指针异常错误,我花了几个小时试图找出原因

路径是正确的,因为它在读取文件时起作用

主要内容:

WriteConfig:

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.transform.OutputKeys;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerException;
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 WriteConfig {
Document dom;
Element e = null;
String name;
String gender;
String race;
String cclass;

public WriteConfig(String xml) {
    DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance();       
    try {
        DocumentBuilder docBuilder = docFactory.newDocumentBuilder();
        dom = docBuilder.newDocument();
        Element mainRootElement = dom.createElement("character");

        e = dom.createElement("name");
        e.appendChild(dom.createTextNode(name));
        mainRootElement.appendChild(e);

        e = dom.createElement("gender");
        e.appendChild(dom.createTextNode(gender));
        mainRootElement.appendChild(e);

        e = dom.createElement("race");
        e.appendChild(dom.createTextNode(race));
        mainRootElement.appendChild(e);

        dom.appendChild(mainRootElement);

        try {
            Transformer tr = TransformerFactory.newInstance().newTransformer();
            tr.setOutputProperty(OutputKeys.INDENT, "yes");
            tr.setOutputProperty(OutputKeys.METHOD, "xml");
            tr.setOutputProperty(OutputKeys.ENCODING, "UTF-8");
            tr.setOutputProperty(OutputKeys.DOCTYPE_SYSTEM, "res/config.dtd");
            tr.setOutputProperty("{http://xml.apache.org/xslt}indent-amount", "4");
            DOMSource dSource = new DOMSource(dom);
            StreamResult sResult = new StreamResult(xml);
            tr.transform(dSource, sResult);
        } catch (TransformerException te) {
            te.printStackTrace();
        } 
    } catch (ParserConfigurationException pce) {
        pce.printStackTrace();
    }
   }
 }
错误:

    ERROR:  ''
javax.xml.transform.TransformerException: java.lang.NullPointerException
    at com.sun.org.apache.xalan.internal.xsltc.trax.TransformerImpl.transform(TransformerImpl.java:752)
    at com.sun.org.apache.xalan.internal.xsltc.trax.TransformerImpl.transform(TransformerImpl.java:357)
    at bamberger.com.engine.WriteConfig.<init>(WriteConfig.java:64)
    at bamberger.com.engine.Main.main(Main.java:13)
Caused by: java.lang.NullPointerException
    at com.sun.org.apache.xml.internal.serializer.ToStream.characters(ToStream.java:1612)
    at com.sun.org.apache.xalan.internal.xsltc.trax.DOM2TO.parse(DOM2TO.java:244)
    at com.sun.org.apache.xalan.internal.xsltc.trax.DOM2TO.parse(DOM2TO.java:230)
    at com.sun.org.apache.xalan.internal.xsltc.trax.DOM2TO.parse(DOM2TO.java:230)
    at com.sun.org.apache.xalan.internal.xsltc.trax.DOM2TO.parse(DOM2TO.java:136)
    at com.sun.org.apache.xalan.internal.xsltc.trax.DOM2TO.parse(DOM2TO.java:98)
    at com.sun.org.apache.xalan.internal.xsltc.trax.TransformerImpl.transformIdentity(TransformerImpl.java:699)
    at com.sun.org.apache.xalan.internal.xsltc.trax.TransformerImpl.transform(TransformerImpl.java:743)
    ... 3 more
---------
java.lang.NullPointerException
    at com.sun.org.apache.xml.internal.serializer.ToStream.characters(ToStream.java:1612)
    at com.sun.org.apache.xalan.internal.xsltc.trax.DOM2TO.parse(DOM2TO.java:244)
    at com.sun.org.apache.xalan.internal.xsltc.trax.DOM2TO.parse(DOM2TO.java:230)
    at com.sun.org.apache.xalan.internal.xsltc.trax.DOM2TO.parse(DOM2TO.java:230)
    at com.sun.org.apache.xalan.internal.xsltc.trax.DOM2TO.parse(DOM2TO.java:136)
    at com.sun.org.apache.xalan.internal.xsltc.trax.DOM2TO.parse(DOM2TO.java:98)
    at com.sun.org.apache.xalan.internal.xsltc.trax.TransformerImpl.transformIdentity(TransformerImpl.java:699)
    at com.sun.org.apache.xalan.internal.xsltc.trax.TransformerImpl.transform(TransformerImpl.java:743)
    at com.sun.org.apache.xalan.internal.xsltc.trax.TransformerImpl.transform(TransformerImpl.java:357)
    at bamberger.com.engine.WriteConfig.<init>(WriteConfig.java:64)
    at bamberger.com.engine.Main.main(Main.java:13)

谢谢

您从未初始化
字符串名称e.appendChild(dom.createTextNode(name))之前,请在
WriteConfig
中选择code>。初始化
name
变量以修复错误

String name;
String gender;
String race;
String cclass;
必须先初始化变量,然后才能使用它

         //Decarle variable
        String name;
        String gender;
        String race;
        String cclass;


        //Initialize and set value
        name = "EwokHugz";
        gender = "female";
        race = "10";
        cclass = "XML Programming";

花了几个小时=>而您没有使用调试器来查看空值在哪里?我认为你只是在浪费时间:在构造函数中实现处理是一种糟糕的风格。此外,如果您谈论异常,请显示异常并映射行号。在您的示例代码中,所有字符串都为空。请检查:如果这没有帮助,请发布错误。这将使代码中的问题更容易区分我知道NullPointerException是什么,但我仍然无法找出这段代码的错误。我贴出了错误信息,头撞在键盘上。非常感谢你。我不敢相信我错过了。我计划在代码运行后通过另一种方法获取这些字符串,但我忘记了初始化它们。我们都在那里:P下次,使用
System.out.println(name)
检查变量是否为空。任何不是基元的变量都可以为null
String name;
String gender;
String race;
String cclass;
         //Decarle variable
        String name;
        String gender;
        String race;
        String cclass;


        //Initialize and set value
        name = "EwokHugz";
        gender = "female";
        race = "10";
        cclass = "XML Programming";