【问题标题】:SaxParseException-Premature end of FileSaxParseException-文件过早结束
【发布时间】:2015-07-07 19:16:00
【问题描述】:
        File xml = new File("C:/members.xml");
        DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory
                .newInstance();
        DocumentBuilder documentBuilder = documentBuilderFactory
                .newDocumentBuilder();
        documentBuilder = documentBuilderFactory.newDocumentBuilder();

        Document document = documentBuilder.parse(xml);


        document.getDocumentElement().normalize();

        NodeList nodeList = document.getElementsByTagName("member");

实际上这个问题解析(xml)。我收到错误消息“文件过早结束”首先记录添加xmlfile。我找不到真正的解决方案。请帮助我

    <?xml version="1.0" encoding="UTF-8"?>
    <members>
        <member id="0">
            <name>a</name>
            <surname>a</surname>
            <fatherName>a</fatherName>
            <age>0</age>
            <email>a@a.com</email>
            <username>a</username>
            <password>a</password>
        </member>
    </members>

【问题讨论】:

  • 向我们展示一个最小但完整的members.xml 示例,让我们重现问题。
  • 您的第一个标签&lt;?xml version="1.0" encoding="UTF-8"?&gt; 出现了一些错误。我不确定它是什么,但是当我用我的 xml 标签替换该标签时,它工作正常。(虽然我的标签没有变化。尝试手动输入相同的标签。)
  • 您的文件('members.xml')真的像 XML Prolog 状态那样以 UTF-8 编码吗?如果 xml prolog 中定义的编码和实际的文件编码不同,这可能会导致这样的问题。

标签: java xml io


【解决方案1】:

您的示例有问题 - 以下代码运行时没有错误:

public void test() throws ParserConfigurationException, SAXException, IOException {
    String xml = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"
            + "<members>"
            + "<member id=\"0\">"
            + "<name>a</name>"
            + "<surname>a</surname>"
            + "<fatherName>a</fatherName>"
            + "<age>0</age>"
            + "<email>a@a.com</email>"
            + "<username>a</username>"
            + "<password>a</password>"
            + "</member>"
            + "</members>";
    //File xml = new File("C:/members.xml");
    DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory
            .newInstance();
    DocumentBuilder documentBuilder = documentBuilderFactory.newDocumentBuilder();

    Document document = documentBuilder.parse(new ByteArrayInputStream(xml.getBytes("UTF-8")));

    document.getDocumentElement().normalize();

    NodeList nodeList = document.getElementsByTagName("member");
}

【讨论】:

    【解决方案2】:

    尝试在 webbrowse(firefox 或 chrome)中打开 xml 文件 添加看看有没有报错。

    如果你有 linux 你可以这样做:

    xmllint members.xml

    这个命令告诉文件是否是有效的 xml 文件

    【讨论】:

      猜你喜欢
      • 2013-11-24
      • 1970-01-01
      • 2012-09-08
      • 2011-08-19
      • 2011-09-11
      • 1970-01-01
      • 2018-02-18
      相关资源
      最近更新 更多