2017-11-17 7 views
1

私はJavaでXMLファイルを読み込み、そのXMLスキーマに対してそれを比較しようとしていますが、私はこのエラーを乗り越えることはできません。致命的なエラー:1:1:内容がプロローグで許可されていません。 org.xml.sax.SAXParseException

[致命的なエラー]:1: 1:内容はプロローグで許可されていません。 org.xml.sax.SAXParseException; lineNumber:1; columnNumber:1;コンテンツはプロローグで許可されていません。

これは

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

を読み込むファイルの先頭である私は、バイナリエディタを通じて私のXMLをスキャンしたが、私は内部の任意の奇妙な文字を見つけられませんでしたので、私は問題が

です知りませんmyfile.xmlあなたはおそらくによるとUTF-8のファイルを持っている

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

答えて

3

StringReader("myfile.xml")は、ファイル名ではなくXMLでなければならない文字列引数をとります。 XML文書がm文字で始まらない可能性があるため、パーサーは文字列リテラルのmyfile.xml(ファイルの内容はmyfile.xmlではありません)を読み込み、直ちに失敗します。

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

変更

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

0

Teオーダーマーカー(BOM)。ほとんどのエディタには見えませんが、パーサを混乱させる可能性があります。 BOMなしでUTF-8に変換してみてください。

関連する問題