libxml2解析问题:命名空间错误

时间:2019-05-07 13:23:33

标签: c xml-parsing libxml2

我在解析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

此标签没有用,但我不能每次手动删除。

1 个答案:

答案 0 :(得分:1)

  

我在解析xml文件时遇到问题,对于libxml来说是不正确的,但已由应用程序所有者证明有效。

如果XML文件与您的问题完全相同,则该应用程序的所有者是错误的。任何一致的XML解析器在尝试解析XML时都会遇到致命错误。

  

我试图将RFC阅读到XOP,但似乎与我的问题无关。

您是正确的,XOP的详细信息与此较低级别的问题无关。

可能值得学习XML命名空间的基础知识,因此您可以更好地理解XML格式为何不正确的原因(特别是xmlns属性)。 https://www.w3schools.com/xml/xml_namespaces.asp

相关问题