4

我写了一个 XML,但是在那个 XML 的第一行我得到了一个错误

文档类型声明包含或指向的标记声明必须格式正确

下面是 XML(尖括号后的空格是故意的)

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

<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" 
"http://struts.apche.org/dtds/struts-2.0.dtd">  
<struts>

    <package name="default" extends="struts-default">       
        <action name="getTutorial" class="org.koushik.javabrains.action.TutorialAction">                
            <result name="success">/success.jsp</result>
            <result name="error">/error.jsp</result>
        </action>

    </package>

</struts>

第一行 ( <?xml version="1.0" encoding="UTF-8"?>) 抛出错误。

请让我知道为什么我会遇到这个问题。

4

2 回答 2

0

创建 dtd 时,它始终包含以下行

<!DOCTYPE…. [
...
]>  

只需删除声明 DTD 数据的第一行和最后一行,因为只有在 XML 文件中包含 DTD 时才使用这些行。

于 2014-02-14T11:57:43.363 回答
0

我猜这是因为<and 和and?xml之间 有额外的空格。?>

请注意,您似乎在 doctype 声明的开头和结尾也有额外的空格。

编辑

好的,我发现您的文件还有两个问题:

  1. 您似乎忘记了 DTD uri 中 apache.org 中的“a”。
  2. http://struts.apache.org/dtds/struts-2.0.dtd上的 DTD以 XML 声明 ( <?xml version="1.0" encoding="UTF-8"?>) 开头,在 DTD 的开头是禁止的(因为 DTD不是XML 文件)。

如果第一个错误是导致问题的原因,则很容易修复。但是,第二个错误是在 struts 开发人员方面。我猜大多数 XML 解析器都会忽略它(否则 struts 团队会在很久以前修复它),但是如果您有一个确实抱怨它的 XML 解析器,恐怕您唯一的选择是切换到另一个。

于 2013-03-23T14:56:37.437 回答