验证xml中根元素的方法

问题描述

不能在 Dtd 中显式声明根元素类型。这是在文档的文档类型声明中完成的,而不是在 DTD 中。

我使用 xmlValidateDtd 函数再次验证内存存储的 DTD 中的 xml 文件,但我不希望检查未明确包含“预设”根元素的文件

DTD:

<!ELEMENT presets (station)*>
<!ELEMENT station EMPTY>
<!ATTLIST station name CDATA #required frequency CDATA #required>

检查xml文件代码

gboolean
presets_xml_validate_from_resource (xmlDoc *doc,const char *resource)
{
    g_autoptr (GBytes) bytes = NULL;
    gconstpointer data;
    gsize size;
    xmlParserInputBufferPtr buf;
    xmlValidCtxt ctxt;
    xmlDtd *dtd;
    gboolean ret;

    bytes = g_resources_lookup_data (resource,G_RESOURCE_LOOKUP_FLAGS_NONE,error);
    if (bytes == NULL)
    {
        return FALSE;
    }

    data = g_bytes_get_data (bytes,&size);
    buf = xmlParserInputBufferCreateStatic ((const char *) data,size,XML_CHAR_ENCODING_UTF8);

    dtd = xmlIOParseDTD (NULL,buf,XML_CHAR_ENCODING_UTF8);
    if (dtd == NULL)
    {
        return FALSE;
    }

    memset (&ctxt,sizeof (ctxt));

    ret = xmlValidateDtd (&ctxt,doc,dtd);

    xmlFreeDtd (dtd);

    return ret;
}

当我尝试打开随机文件时,它会产生许多不必要的错误消息。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...