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

Posted

技术标签:

【中文标题】未检测到文档的语法约束(DTD 或 XML 模式) (Android)【英文标题】:No grammar constraints (DTD or XML schema) detected for the document (Android) 【发布时间】:2013-06-26 01:29:19 【问题描述】:

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

来源是:

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


</GridLayout>

错误:

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

【问题讨论】:

【参考方案1】:

对我来说,字符编码unix文件模式在Windows上运行eclipse是个问题:

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

【讨论】:

为我工作。添加从eclipse复制(控件c),粘贴到记事本(控件v)中,然后在记事本中全部选中(控件a),复制它(控件c),最后将其粘贴回eclipse中。从记事本粘贴和复制会删除所有文本格式,因为记事本只支持纯文本。 工作得很好,谢谢。虽然在某些情况下我不得不剪切\粘贴\保存\剪切\粘贴才能使其工作。第一次粘贴后,Eclipse 将警告标记移到文件末尾,显然是一些编码或错误字符问题。【参考方案2】:

我从错误问题中检索解决方案:

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

它对我有用。

小心,我的解决方案是一种“我不明白所以我宁愿停用”...

【讨论】:

谢谢,但这正是我不想要的。如果您再次查看我的问题,您会看到:“我不想在设置中单击忽略而不是警告,因此此处发布了问题。” :) @Hoornet 这似乎是 Eclipse 中的一个错误,因为即使从其中一个文件中删除所有内容并保存后,警告仍然存在。对于一些文件,我设法通过执行 CtrlA-CtrlX-CtrlV 来消除警告,但是一旦我忽略了所有警告,正如这个答案所解释的那样,并将 no grammar 放回 warning 状态,那些相同的文件再次出现相同的警告...&lt;!DOCTYPE ...&gt; 解决方案对我不起作用。所以我不会花更多时间来解决这个问题。【参考方案3】:

Eclipse 解决方案:

在每个有问题的 XML 的开头添加&lt;!DOCTYPE something&gt;

在xml标签&lt;?xml version="1.0" encoding="utf-8"?&gt;之后

你可以为doctype写任何东西,但据我所知,基本上它应该是manifest、activity等

【讨论】:

DOCTYPE 描述 (DTD) 在这里得到了很好的解释:xmlwriter.net/xml_guide/doctype_declaration.shtml 基本上,它应该是 '' 或者在你的情况下:''【参考方案4】:

就我而言,我通过这个解决了这个问题

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

【讨论】:

【参考方案5】:

你也可以添加

<!DOCTYPE androidXML>

下面

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

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

【讨论】:

【参考方案6】:

试试下面的

<?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_
      android:id="@+id/grid"
      android:layout_ >

</GridLayout>

【讨论】:

你的dtd设置中有“xmlns:android="schemas.android.com/apk/res/android"吗?我没有 试试这个***.com/questions/4551783/… 该链接不是最新的。例如,答案说任何人都应该选择:作为键类型:命名空间名称但是这个选项不再存在......【参考方案7】:

将标记的文件移到项目文件夹之外。(或移动包含标记文件的文件夹。) 刷新项目。(在项目资源管理器中选择项目,->) 移回文件。 刷新项目。

【讨论】:

【参考方案8】:

简单的方法是先全选(ctrl+a) 剪掉它(ctrl+x) 比过去,同样的错误出现在大多数底部再次执行相同的过程并保存它,再次执行上述过程,而不是你的xml文件是免费的从这种类型的错误中。

【讨论】:

以上是关于未检测到文档的语法约束(DTD 或 XML 模式) (Android)的主要内容,如果未能解决你的问题,请参考以下文章

xml约束

XML约束

在 Eclipse 中禁用 Ant 脚本的 DTD 警告?

xml约束技术---schema

XML约束

XML的验证模式DTD与XSD的区别