我在解析xml文件时遇到问题,对于libxml来说是不正确的,但已由应用程序所有者证明有效。
我尝试将RFC读入XOP,但似乎与我的问题无关。而且我不明白如何在我的代码中实现其他解决方案。
int main(int argc, char **argv) {
char *docname;
xmlDocPtr doc;
xmlNodePtr cur;
xmlChar *date;
if (argc < 2) {
printf("Commande: %s nom_du_fichier\n", argv[0]);
return EXIT_FAILURE;
}
docname = argv[1];
doc = xmlParseFile(docname);
cur = xmlDocGetRootElement(doc);
cur = cur->xmlChildrenNode;
while (cur != NULL) {
if ((!xmlStrcmp(cur->name, (const xmlChar *)"anpr"))) {
date = xmlGetProp(cur, "date");
printf("date: %s\n", date);
xmlFree(date);
}
cur = cur->next;
}
xmlFreeDoc(doc);
return EXIT_SUCCESS;
}
代码xml:
<msg><tag date="1556896362471" session="1702"><jpeg><xop:Include href="A"/></jpeg>/msg>
file.xml:1: namespace error : Namespace prefix xop on Include is not defined
此标签没有用,但我不能每次手动删除。
答案 0 :(得分:1)
我在解析xml文件时遇到问题,对于libxml来说是不正确的,但已由应用程序所有者证明有效。
如果XML文件与您的问题完全相同,则该应用程序的所有者是错误的。任何一致的XML解析器在尝试解析XML时都会遇到致命错误。
我试图将RFC阅读到XOP,但似乎与我的问题无关。
您是正确的,XOP的详细信息与此较低级别的问题无关。
可能值得学习XML命名空间的基础知识,因此您可以更好地理解XML格式为何不正确的原因(特别是xmlns
属性)。 https://www.w3schools.com/xml/xml_namespaces.asp