precious。。。 2018-10-16 13:37 采纳率: 0%
浏览 515

请问下面的报错是什么原因,试过new xmlwriter的时候去掉format,能成功写入xml文件,但是没有格式?

java.lang.StringIndexOutOfBoundsException: String index out of range: -1
at java.lang.String.charAt(String.java:687)
at org.dom4j.io.XMLWriter.writeElementContent(XMLWriter.java:1074)
at org.dom4j.io.XMLWriter.writeElement(XMLWriter.java:954)
at org.dom4j.io.XMLWriter.writeNode(XMLWriter.java:1301)
at org.dom4j.io.XMLWriter.writeElementContent(XMLWriter.java:1086)
at org.dom4j.io.XMLWriter.writeElement(XMLWriter.java:954)
at org.dom4j.io.XMLWriter.writeNode(XMLWriter.java:1301)
at org.dom4j.io.XMLWriter.write(XMLWriter.java:344)
at sjzxy.lxy.jyj.xml.DOM4jUtils.transform(DOM4jUtils.java:35)
at sjzxy.lxy.jyj.xml.CRUD_xml.add(CRUD_xml.java:29)
at sjzxy.lxy.jyj.xml.CRUD_xmlTest.main(CRUD_xmlTest.java:14)

操作系统:win10
myeclipse 10
dom4j1.6.1

package sjzxy.lxy.jyj.xml;

import java.io.FileWriter;
import java.io.IOException;

import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.SAXReader;
import org.dom4j.io.XMLWriter;

public class DOM4jUtils {
// 获取document对象
public static Document getDocum(String path) throws DocumentException {
// 获取解析器
SAXReader reader = new SAXReader();
// 获取document对象
return reader.read(path);
}

// 回写
public static void transform(String path, Document document) {
    // 回写

    // 漂亮的格式
    OutputFormat format = OutputFormat.createPrettyPrint();
    format.setEncoding("UTF-8");

    try {
        XMLWriter writer = new XMLWriter(new FileWriter(path),format);
        writer.write(document);

        writer.close();
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

}

}

 package sjzxy.lxy.jyj.xml;

import java.util.List;

import org.dom4j.Document;
import org.dom4j.Element;

public class CRUD_xml {
    public void add(Student stu) throws Exception{
        String path = "src/students.xml";
        //获取根节点
        Document document = DOM4jUtils.getDocum(path);
        Element root = document.getRootElement();



        //添加结点
        root.addElement("student").setText("");

        //获取student结点
        List<Element> list = root.elements();
        //System.out.println(list.get(0).getText());
        Element student = list.get(list.size()-1);

        student.addElement("name").setText(stu.getName());
        student.addElement("num").setText(stu.getNum());
        student.addElement("desc").setText(stu.getDesc());
        //回写
        DOM4jUtils.transform(path, document);
    }
}


package sjzxy.lxy.jyj.xml;

public class CRUD_xmlTest {

/**
 * @param args
 */
public static void main(String[] args) {
    // TODO Auto-generated method stub

    Student stu = new Student("1111","jason","好学生");
    CRUD_xml xm = new CRUD_xml();
    try {
        xm.add(stu);
    } catch (Exception e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
}

}

  • 写回答

1条回答 默认 最新

  • lsy_24678 2020-10-29 11:26
    关注
        OutputFormat format = OutputFormat.createPrettyPrint();
        //如下 设置便可,具体解释参考dom4j的API
        format.setPadText(false);
    
    评论

报告相同问题?

悬赏问题

  • ¥50 导入文件到网吧的电脑并且在重启之后不会被恢复
  • ¥15 (希望可以解决问题)ma和mb文件无法正常打开,打开后是空白,但是有正常内存占用,但可以在打开Maya应用程序后打开场景ma和mb格式。
  • ¥15 绘制多分类任务的roc曲线时只画出了一类的roc,其它的auc显示为nan
  • ¥20 ML307A在使用AT命令连接EMQX平台的MQTT时被拒绝
  • ¥20 腾讯企业邮箱邮件可以恢复么
  • ¥15 有人知道怎么将自己的迁移策略布到edgecloudsim上使用吗?
  • ¥15 错误 LNK2001 无法解析的外部符号
  • ¥50 安装pyaudiokits失败
  • ¥15 计组这些题应该咋做呀
  • ¥60 更换迈创SOL6M4AE卡的时候,驱动要重新装才能使用,怎么解决?