• Linux C语言调用libxml2的库文件。格式化xml文件,让rootElement的闭合标签新起一行!


    好久没有更新了.其实这周在写东西,东西没出来,就没有写博客了.

    刚才发现一个超级恶心的问题.

    我用libxml读取xml数据,然后插入一个数据。但是居然是一行,而没有新起一行。怎么办呢,我就搜libxml format 和xmlSaveFormatFile ,还是有不少这样的问题的。还有人说这是一个bug,其实很恶心的很好笑的。

    在libxml2的 $PREFIX/share/gtk-doc/html/libxml2/libxml2-tree.html#xmlSaveFormatFileEnc 有这样的一个解释.

    xmlSaveFormatFile ()

    int xmlSaveFormatFile (const char * filename, xmlDocPtr cur, int format)

    Dump an XML document to a file. Will use compression if compiled in and enabled. If @filename is "-" the stdout file is used.
    If @format is set then the document will be indented on output.
     Note that @format = 1 provide node indenting only if xmlIndentTreeOutput = 1 or xmlKeepBlanksDefault(0) was called。

    filename: the filename (or URL)
    cur: the document
    format: should formatting spaces been added
    Returns: the number of bytes written or -1 in case of failure.

    最后一个参数是format,=1的时候就可以format,但是,当 下面两个全局变量 值被设置 才管用。

    xmlKeepBlanksDefault(0) ;//libxml2 global variable .
    xmlIndentTreeOutput = 1 ;// indent .with \n

    有这两个参数并进行设置才可以管用。在xmlSaveFormatFile前面加入这两行,运行不管用。

    然后搜索。最后看到一个说用xmlReadFile而不是xmlParseFile解析文件。

    doc1 = xmlParseFile(docname);
    //doc1 = xmlReadFile(docname, NULL, XML_PARSE_NOBLANKS);

    发现貌似还不管用。后来发现,在这个解析xml文件前面加上 上面的两个全局变量,终于有换行了。而且还自动格式化了xml文件。不管用那个都管用。

    所以这不是一个bug,而是一个调用先后的问题。但是上面的函数 解释的,一点也没有申明这一点。所以,反正现在可以格式化xml文件了,很好的。。

     附上一些我搜索到的一些资料链接:

    http://www.cppblog.com/lymons/archive/2009/03/30/37553.html 

    http://westsoftware.blog.163.com/blog/static/2609410920072175245763/ 这里有一个中文版本的文档.示例很重要.有了示例好办事情了.

    转载请注明出处:http://www.cnblogs.com/ayanmw 多谢

    ------------------------------------------------------------------------------------------------

    一定要专业!本博客定位于 ,C语言,C++语言,Java语言,Android开发和少量的Web开发,之前是做Web开发的,其实就是ASP维护,发现EasyASP这个好框架,对前端后端数据库 都很感觉亲切啊。. linux,总之后台开发多一点。以后也愿意学习 cocos2d-x 游戏客户端的开发。

  • 相关阅读:
    js let
    go 语言
    第二十七篇、使用MVVM布局页面
    第二十六篇、因为自定item(nav)而使系统右滑返回手势失效的解决方法
    第四篇、点赞的粒子动画
    第二十五篇、抽屉效果的核心代码
    第二十四篇、iOS 10版本适配
    第二十三篇、使用NSURLSession时需要注意一个内存泄漏问题
    第十四篇、Ajax与Json
    第十三篇、jQuery Mobile
  • 原文地址:https://www.cnblogs.com/ayanmw/p/2290561.html
Copyright © 2020-2023  润新知