标签: libxml2

正确的方法来链接来自iPhone/CocoaTouch库的库

我正在为iPhone编写一个静态库,我想知道我在做什么,或者我应该采取不同的方法.

我写的静态库依赖于libxml2.libxml2有一个动态库(dylib)和一个静态库(a).我尝试了两种方法.

方法一 - 当我尝试通过将"-lxml2"添加到"其他链接器标志"来链接静态库时,构建失败并显示以下消息:

/Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin/libtool: file: -lxml2 is not an object file (not allowed in a library)
Run Code Online (Sandbox Code Playgroud)

方法二 - 我可以成功链接静态库中的动态库,但我不确定iPhone上是否允许(或正确的方法).即使我正在构建静态库,Apple是否允许链接动态库的静态库?我还在学习静态库,但是根据我的理解,来自dylib的代码将与我的代码结合起来构成一个库,因此与dylib的链接应该不是问题.

总结一下:

  • mylibrary.a - > libxml2.a [不起作用]
  • mylibrary.a - > libxml2.dylib [构建,但这是正确的,可以接受吗?]

iphone static-libraries libxml2 static-linking

7
推荐指数
2
解决办法
6394
查看次数

在Xcode 3.2.5和SDK 4.2上链接错误libxml2.dylib

我正在尝试使用oauth库连接到twitter.该库需要添加libxml2.dylib.将此添加到SDK 4.1或更低版本时,项目构建成功.但是当我使用xcode 3.2.5和SDK 4.2时,我得到了关于丢失标题的错误

我只是将libxml2.dylib添加到框架然后从目标配置中添加"$ {SDKROOT}/usr/include/libxml2"到标题搜索路径.

我收到错误:libxml/xmlreader.h:没有这样的文件或目录.

我试图添加的twitter oauth库是Twitter + OAuth,这是一个教程,你可以看到它有的src项目,在SDK 4.1上正常工作,甚至不能在SDK4.2 http://mobile.tutsplus编译. COM /教程/ iphone/Twitter的API-iphone /

我错过了什么?

iphone sdk libxml2 mgtwitterengine ios-4.2

7
推荐指数
1
解决办法
8146
查看次数

哪个lxml和libxml2更适合在Python中解析格式错误的html?

对于格式错误的HTML,哪一个更好,更有用?
我找不到如何使用libxml2.

谢谢.

python lxml html-parsing libxml2

7
推荐指数
1
解决办法
4260
查看次数

libxml2导致内存泄漏

我正在使用libxml2编写XML解析器.实际上,我完成了它,但有一个非常讨厌的内存问题.该程序首先从我的数据库中获取一些链接,所有这些链接指向XML文件.我用curl下载它们.这个过程很简单:我下载一个文件,然后解析它,依此类推......

问题似乎是解析完成时.Curl下载下一个文件,但似乎没有释放以前的XML,因为我猜libxml2将它加载到RAM中.在解析最后一个XML时,我发现自己有一个~2.6GB的泄漏(是的,其中一些文件非常大......)我的机器只有4GB的RAM.它目前有效,但将来会有更多链接添加到数据库中,所以我现在必须修复它.

我的代码非常基础:

xmlDocPtr doc;
doc = xmlParseFile("data.xml");

/* code to parse the file... */

xmlFreeDoc(doc);
Run Code Online (Sandbox Code Playgroud)

我试过用:

xmlCleanupParser();
Run Code Online (Sandbox Code Playgroud)

但是医生说:"它不会释放任何与文件相关的记忆." (http://xmlsoft.org/html/libxml-parser.html#xmlCleanupParser)

所以,我的问题是:有人知道如何释放所有这些文件相关的内存吗?

c libxml2

7
推荐指数
1
解决办法
6223
查看次数

libxml2 vs expat用于XMPP服务器

我正试图在Go中从头开始创建一个XMPP库(以及后来的服务器)(尽管语言本身是无关紧要的),作为一种学习XMPP协议和服务器软件开发的方法.

正如你们许多人所知,XMPP是基于XML的消息传递协议,它依赖于大量短而频繁的XML流.我认为对于这样的应用程序,基于事件的XML解析器应该更好,因为我不需要DOM和所有这些(如果我错了,请纠正我).请记住,此库适用于服务器,因此可能会同时运行多个实例;

对于该用例libxml2或expat,两者中哪一个具有更好的性能和内存使用?

c xmpp go libxml2 expat-parser

6
推荐指数
1
解决办法
7012
查看次数

为什么在使用命名空间时,XML :: LibXML没有为此xpath查询找到节点

我正在尝试使用XPath查询选择一个节点,我不明白为什么XML :: LibXML在有xmlns属性时找不到该节点.这是一个演示此问题的脚本:

#!/usr/bin/perl

use XML::LibXML; # 1.70 on libxml2 from libxml2-dev 2.6.16-7sarge1 (don't ask)
use XML::XPath;  # 1.13
use strict;
use warnings;

use v5.8.4; # don't ask

my ($xpath, $libxml, $use_namespace) = @ARGV;

my $xml = sprintf(<<'END_XML', ($use_namespace ? 'xmlns="http://www.w3.org/2000/xmlns/"' : q{}));
<?xml version="1.0" encoding="iso-8859-1"?>
<RootElement>
  <MyContainer %s>
    <MyField>
        <Name>ID</Name>
        <Value>12345</Value>
    </MyField>
    <MyField>
        <Name>Name</Name>
        <Value>Ben</Value>
    </MyField>
  </MyContainer>
</RootElement>
END_XML

my $xml_parser
    = $libxml ? XML::LibXML->load_xml(string => $xml, keep_blanks => 1)
    :           XML::XPath->new(xml => $xml);

my $nodecount = 0;
foreach …
Run Code Online (Sandbox Code Playgroud)

xml perl xpath libxml2

6
推荐指数
2
解决办法
6117
查看次数

xml缩进

我正在使用libxml2的xmlwriter api编写一个xml文件.

当我用记事本打开文件时,缩进不正确.

有谁知道如何解决它?

非常感谢.

xml libxml2

6
推荐指数
1
解决办法
6859
查看次数

我找到了libxml2错误(多线程解析中的内存泄漏)?

我正在使用libxml2实际处理数据处理代码.我被困在一个无法移除的内存泄漏上.这是生成它的最小代码:

#include <stdlib.h>
#include <stdio.h>
#include <libxml/parser.h>
#include <libxml/tree.h>
#include <omp.h>

int main(void)
{
    xmlDoc *doc;
    int tn;
    char fname[32];

    omp_set_num_threads(2);
    xmlInitParser();
    #pragma omp parallel private(doc,tn,fname)
    {
        tn  = omp_get_thread_num();
        sprintf(fname,"testdoc%d.xml",tn);
        doc = xmlReadFile(fname,NULL,0);
        printf("document %s parsed on thread %d (%p)\n",fname,tn,doc);
        xmlFreeDoc(doc);
    }
    xmlCleanupParser();

    return EXIT_SUCCESS;
}
Run Code Online (Sandbox Code Playgroud)

在运行时,输出为:

document testdoc0.xml parsed on thread 0 (0x1005413a0)
document testdoc1.xml parsed on thread 1 (0x1005543c0)
Run Code Online (Sandbox Code Playgroud)

确认我们确实有多线程,并且doc在并行区域中确实是私有的.可以注意到我正确应用了libxml2(http://xmlsoft.org/threads.html)的线程安全说明.Valgrind报道:

HEAP SUMMARY:
    in use at exit: 9,000 bytes in 8 blocks …
Run Code Online (Sandbox Code Playgroud)

c memory-leaks openmp libxml2

6
推荐指数
1
解决办法
3560
查看次数

如何在libxml2中添加由string构造的xml节点

我使用Libxml2来编码xml文件中的数据.我的数据包含"<"和">"等标签.当它转换为xml时,这些标签也会转换为"<"和">".有没有办法解决这个问题.我想在解码那个xml文件时将这些标签用作xml节点,因此CDATA不是解决此问题的方法.请为此提供任何解决方案.谢谢.

示例代码:

xmlNewChild(node, NULL, (xmlChar *)"ADDRESS", (xmlChar *)"<street>Park Street</street><city>kolkata</city>");

and output of above code is:
<person>
<ADDRESS>&lt;street&gt;Park Street&lt;/street&gt;&lt;city&gt;Kolkata&lt;/city&gt;</ADDRESS>
Run Code Online (Sandbox Code Playgroud)

c xml libxml2

6
推荐指数
1
解决办法
7393
查看次数

PHP,SimpleXML,解码CDATA中的实体

我遇到以下行为:

$xml_string1 = "<person><name><![CDATA[ Someone&#039;s Name ]]></name></person>";
$xml_string2 = "<person><name> Someone&#039;s Name </name></person>";

$person = new SimpleXMLElement($xml_string1);
print (string) $person->name; # Someone&#039;s Name

$person = new SimpleXMLElement($xml_string2);
print (string) $person->name; # Someone's Name

$person = new SimpleXMLElement($xml_string1, LIBXML_NOCDATA);
print (string) $person->name; # Someone&#039;s Name
Run Code Online (Sandbox Code Playgroud)

php文档说NOCDATA"将[CD] CDATA合并为文本节点".对我来说,这意味着CDATA将被视为与文本节点相同 - 或者第三个示例的行为现在将与第二个示例相同.

我无法控制XML(它是来自外部源的提要),否则我只是删除CDATA标记,因为它什么也不做,并且破坏了我想要的行为.

为什么上面的例子表现得如此?有没有办法让SimpleXML以与处理文本节点相同的方式处理CDATA节点?"合并CDATA作为文本节点"实际上做了什么,因为我似乎不理解该选项?

在我提取数据之后,我正在解码,但上面的例子对我来说仍然没有意义.

php xml simplexml cdata libxml2

6
推荐指数
1
解决办法
8621
查看次数