该文档(Android)未检测到语法约束(DTD或XML模式)。

13

我和很多人一样有同样的问题,但是我确实有xmlns:android和xml=...标签。仍然出现相同的错误。我不想在设置中只是点击忽略而不是警告,因此我在这里发布了这个问题。

源代码如下:

<?xml version="1.0" encoding="utf-8"?>
<GridLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >


</GridLayout>

错误:

"文档中未检测到语法约束(DTD或XML模式)。 grid_layout_test2.xml /SomeProject/res/layout 第1行 XML问题"

8个回答

20

对我来说,当我在Windows上运行eclipse时,遇到了一个字符编码Unix文件模式的问题:

只需标记完整代码,剪切并粘贴回去(简而言之:CtrlA-CtrlX-CtrlV),一切都很好 - 不再出现“无语法约束...”警告


1
对我有用。在Eclipse中复制(Ctrl+C),粘贴到记事本中(Ctrl+V),然后在记事本中全选(Ctrl+A),再次复制(Ctrl+C),最后将其粘贴回Eclipse中。从记事本中复制和粘贴会删除所有文本格式,因为记事本仅支持纯文本。 - DavidF
2
运作得相当不错,谢谢。虽然有时我必须剪切\粘贴\保存\再剪切\再粘贴才能使其正常工作。在第一次粘贴后,Eclipse将警告标记移到了文件末尾,显然是编码或坏字符的问题。 - r41n

13

我从一个错误问题中找到了解决方案:

  1. 点击窗口 > 首选项 > XML > XML文件 > 验证
  2. 将设置“验证文件”>“未指定语法”从警告更改为忽略。
  3. 重新验证您的项目。现在没有更多警告了。

对我有效。

注意,我的解决方案是一种“我不理解所以我更倾向于停用”类型的方法...


4
谢谢您,但这正是我不想要的。如果你再看一遍我的问题,你会发现: “我不想只在设置中点击忽略而不是警告,因此才发布了这个问题。” :) - Hoornet
1
@Hoornet 看起来这是Eclipse的一个bug,因为即使我删除了其中一个文件的所有内容并保存了它,警告仍然存在。对于一些文件,我通过执行CtrlA-CtrlX-CtrlV来关闭警告,但是一旦我像这个答案所解释的那样忽略了所有警告并将__no grammar__放回到__warning__状态,那些相同的文件再次出现了相同的警告... <!DOCTYPE ...> 的解决方案对我不起作用。所以我不会再花更多时间来尝试解决这个问题了。 - Armfoot

4
在我的情况下,我通过这种方式解决了这个问题。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE xml>

4

Eclipse解决方案:

在每个有问题的XML文件开头添加<!DOCTYPE something>

<?xml version="1.0" encoding="utf-8"?>标签后面。

你可以写任何内容作为doctype,但基本上应该是manifest、activity等。这是我理解的。


2
DOCTYPE描述(DTD)在此处得到了很好的解释: https://xmlwriter.net/xml_guide/doctype_declaration.shtml基本上,它应该是'<!DOCTYPE root_element>', 或者在您的情况下:'<!DOCTYPE GridLayout>'。 - Rune

1

你也可以添加

<!DOCTYPE androidXML>

以下

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

然后只需右键单击您的项目并选择验证


0

请尝试以下方法

<?xml version="1.0" encoding="utf-8"?>
<GridLayout xmlns:android="http://schemas.android.com/apk/res/android"
      xmlns:tools="http://schemas.android.com/tools"
      android:layout_width="match_parent"
      android:id="@+id/grid"
      android:layout_height="match_parent" >

</GridLayout>

你的DTD设置中有“xmlns:android="http://schemas.android.com/apk/res/android"”这句话吗?我没有。 - Hoornet
尝试访问此链接:https://dev59.com/_G455IYBdhLWcg3wFP9u - Raghunandan
那个链接已经过时了。例如,答案中说应该选择: 作为键类型:命名空间名称 但是这个选项已经不存在了... - Hoornet

0

把标记的文件移出项目文件夹。(或者移动包含标记文件的文件夹。) 刷新项目。(在项目资源管理器中选择项目,然后 ->) 移回文件。 刷新项目。


0

简单的方法是先全选(ctrl+a),然后剪切(ctrl+x),再粘贴,同样的错误会出现在最底部,再次执行相同的过程并保存,再次执行上述过程,那么你的XML文件就不会有这种类型的错误了。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接