【问题标题】:xml declaration allowed only at the start of the documentxml 声明只允许在文档的开头
【发布时间】:2013-02-25 02:38:27
【问题描述】:

我正在尝试从 jsp 文件中读取 xml 文件。它们都在同一个目录下,我正在使用 BufferReader 从 xml 文件中读取。 我收到错误“第 3 行第 6 列错误:xml 声明仅在文档开头允许”。在网上搜索原因,我得到的只是 xml 文件不应该以新行开头,但我检查了我的 xml,删除了开头的每个空格。 这是我程序中唯一的 xml 文件,所以我真的不知道可能是什么问题。 我正在添加我的 xml 文件和我的 jsp 文件..我做错了什么,但我只是不知道是什么。

我的 xml 文件:

    <?xml version="1.0"encoding="UTF-8"?>
       <quiz>
         <question type="multichoice"  >
       <name>
    <text>Name of question</text>
      </name>
     <questiontext format="html">
    <text>What is the answer to this question?</text>
     </questiontext>
     <answer fraction="100">
    <text>The correct answer</text>
    <feedback><text>Correct!</text></feedback>
     </answer>
     <answer fraction="0">
     <text>A distractor</text>
     <feedback><text>Ooops!</text></feedback>
     </answer>
         <answer fraction="0">
             <text>Another distractor</text>
             <feedback><text>Ooops!</text></feedback>
         </answer>
         <shuffleanswers>1</shuffleanswers>
         <single>true</single>
         <answernumbering>abc</answernumbering>
         </question>
            <question type="truefalse">
        <name>
              <text>Name of question</text>
            </name>
            <questiontext format="html">
            <text>What is the answer to this question?</text>
            </questiontext>
            <answer fraction="100">
               <text>true</text>
               <feedback><text>Correct!</text></feedback>
            </answer>
            <answer fraction="0">
               <text>false</text>
               <feedback><text>Ooops!</text></feedback>
            </answer>
          </question>
          <question type="numerical">
        <name>
               <text>Name of question</text>
            </name>
            <questiontext format="html">
              <text>What is the answer to this question?</text>
            </questiontext>
            <answer fraction="100">
              <text>23</text>
              <feedback><text>Feedback</text></feedback>
            </answer>
         </question>
    </quiz>    

在 xml 的定义之前没有空格(文件中的第一行)。 还有我的jsp文件:

    <%@ page contentType="text/xml" %>
    <%@ page import="java.io.*" %>    
    <%
    //dump out the file
    BufferedReader in = new BufferedReader(new FileReader("questions.xml"));
    String line;
    while((line = in.readLine())!=null){
    out.print(line);
    }
    in.close();
    %>    

我是使用 java 进行 html 编程的新手,所以如果你能帮助我,那就太好了..thanx

【问题讨论】:

    标签: java xml jsp


    【解决方案1】:

    我想您在导航到 JSP 页面时会在浏览器中看到该错误。问题出在 JSP 顶部的页面指令中

    <%@ page contentType="text/xml" %>
    <%@ page import="java.io.*" %>
    

    由于每一个后面都有一个换行符,因此您最终会在数据之前将两个换行符写入out(由out.println 语句写入),这就是错误消息显示您有一个 XML 声明的原因在第 3 行。

    删除换行符,或者将它们移动到指令内部而不是它们之间应该可以解决这个问题:

    <%@ page contentType="text/xml"
    %><%@ page import="java.io.*"
    %><%
    BufferedReader ....
    

    顺便说一句,要读取文件,您可能应该使用FileInputStream(或更好的application.getResourceAsStream)和InputStreamReader 明确设置为正确的字符编码以匹配XML 文件,而不是依赖@987654328 @ 始终使用平台默认编码。

    【讨论】:

      【解决方案2】:

      您可以在文档开头添加以下行:

      <%@ page trimDirectiveWhitespaces="true" %>
      

      这应该可以解决您的问题。

      【讨论】:

      • 这似乎是完成这项工作的更简洁的方法,并且对我有用。这种方法不需要您仅仅为了更改输出而修改语法,因此更具可读性。
      【解决方案3】:

      xml文件可能有问题,检查它是否包含字节顺序标记,如果是删除它。 您可以使用简单的 Notepad++ 通过编辑和检查格式化 UTF-8 而不使用 BOM 来删除它

      http://en.wikipedia.org/wiki/Byte_order_mark

      【讨论】:

        【解决方案4】:

        改变这个:

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

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

        您忘记在"1.0"encoding 之间添加空格。

        【讨论】:

        • 感谢您的帮助,但更改后仍然显示相同的错误。请问是其他问题吗?
        【解决方案5】:

        这是 php Storm 的一个 bug 如果你使用 phpstorm , phpstorm 会让你的代码从第二行开始(不管你做什么)!所以你应该去你的主机并通过直接管理员或 cpanel 编辑器编辑你的文件,然后把你的

         <?xml version=“1.0” encoding=“UTF-8” ?>
        

        第一行代码,“希望有帮助”

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2012-12-06
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-11-06
          相关资源
          最近更新 更多