【问题标题】:Fatal Error :1:1: Content is not allowed in prolog. org.xml.sax.SAXParseException致命错误:1:1:序言中不允许内容。 org.xml.sax.SAXParseException
【发布时间】:2017-11-17 19:37:25
【问题描述】:

我正在尝试用 Java 读取一个 XML 文件,然后将其与它的 XML Schema 进行比较,但我无法克服这个错误:

[致命错误]:1:1:序言中不允许内容。 org.xml.sax.SAXParseException;行号:1;列号:1;序言中不允许有内容。

这是文件读取的开始

try {
        DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
        DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();          
        Document doc = dBuilder.parse(new InputSource(new StringReader("myfile.xml"))); // ERROR OCCURS HERE

我通过 HEX 编辑器扫描了我的 XML,但我没有发现里面有任何奇怪的字符,所以我不知道问题出在哪里

myfile.xml

<?xml version="1.0" encoding="UTF-8" standalone="no"?>

<Schedule xmlns ="schedule"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:noNamespaceSchemaLocation="schedule.xsd">
    <Lesson>
        <Title>Artificial Intelligence</Title>
        <Lecture Classroom="BA">
            <Day>Wednesday</Day>
            <Time>09-11</Time>
        </Lecture>
        <Professor>Hatzilygeroudis</Professor>
    </Lesson>
    <Lesson>
        <Title>Constraint Satisfaction Problems</Title>
        <Lecture Classroom="B3">
            <Day>Monday</Day>
            <Time>19-21</Time>
        </Lecture>
    </Lesson>
    <Lesson>
        <Title>Knowledge Representation in Web</Title>
        <Lecture Classroom="P200">
            <Day>Friday</Day>
            <Time>15-17</Time>
        </Lecture>
        <Professor>Hatzilygeroudis</Professor>
    </Lesson>
    <Lesson>
        <Title>Artificial Intelligence</Title>
        <Lecture>
            <Day>Monday</Day>
            <Time>19-21</Time>
        </Lecture>
    </Lesson>
    <Lesson>
        <Title>AI Programming</Title>
        <Lecture Classroom="B3">
            <Day>Monday</Day>
            <Time>11-13</Time>
        </Lecture>
    </Lesson>
    <Lesson>
        <Title>Introduction to Procedural Programming</Title>
        <Lecture Classroom="P200">
            <Day>Wednesday</Day>
            <Time>15-17</Time>
        </Lecture>
        <Professor>Papadopoulos</Professor>
    </Lesson>
</Schedule>

【问题讨论】:

    标签: java xml xsd xml-parsing


    【解决方案1】:

    StringReader("myfile.xml") 接受一个字符串参数,该参数必须是 XML,而不是文件名。解析器正在读取字符串文字 myfile.xml(不是 myfile.xml 的文件内容)并立即失败,因为 XML 文档可能不是以 m 字符开头。

    改变

    Document doc = dBuilder.parse(new InputSource(new StringReader("myfile.xml")));
    

    Document doc = dBuilder.parse(new InputSource("myfile.xml"));
    

    【讨论】:

      【解决方案2】:

      您可能有一个带有字节顺序标记 (BOM) 的 UTF-8 文件。大多数编辑器看不到它,但可能会弄乱解析器。尝试在没有 BOM 的情况下转换为 UTF-8。

      【讨论】:

        猜你喜欢
        • 2012-07-19
        • 1970-01-01
        • 2022-10-13
        • 1970-01-01
        • 2015-01-30
        • 2021-05-09
        • 2020-03-26
        • 1970-01-01
        • 2010-12-07
        相关资源
        最近更新 更多