致命错误:1:1:prolog中不允许内容。 org.xml.sax.SAXParseException

时间:2017-11-17 19:37:25

标签: java xml xsd xml-parsing

我正在尝试用Java读取XML文件,然后将其与XML Schema进行比较,但我无法解决此错误:

  

[致命错误]:1:1:prolog中不允许内容。       org.xml.sax.SAXParseException; lineNumber:1; columnNumber:1; prolog中不允许使用内容。

这是文件读取的开始

<?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>

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

myfile.xml中

SYNOPFactory

2 个答案:

答案 0 :(得分:5)

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"));

答案 1 :(得分:-1)

您可能拥有带字节顺序标记(BOM)的UTF-8文件。它对大多数编辑来说都是不可见的,但可能会破坏解析器。尝试转换为没有BOM的UTF-8。