标签: libxml2

python libxml2 reader和XML_PARSE_RECOVER

我试图让读者从破碎的XML中恢复.将libxml2.XML_PARSE_RECOVER选项与DOM api(libxml2.readDoc)配合使用可以从实体问题中恢复.

但是,使用带有阅读器API的选项(由于我们正在解析的文档的大小,这是必不可少的)不起作用.它只是陷入永久循环(使用reader.Read()返回-1):

示例代码(小例子):

import cStringIO
import libxml2

DOC = "<a>some broken & xml</a>"

reader = libxml2.readerForDoc(DOC, "urn:bogus", None, libxml2.XML_PARSE_RECOVER | libxml2.XML_PARSE_NOERROR)

ret = reader.Read()
while ret:
    print 'ret: %d' % ret
    print "node name: ", reader.Name(), reader.NodeType()
    ret = reader.Read()
Run Code Online (Sandbox Code Playgroud)

任何想法如何正确恢复?

python libxml2

8
推荐指数
1
解决办法
1232
查看次数

XPath查询结果顺序

对于另一个问题,我创建了一些与我的开发机器相关的XML相关代码,但在viper键盘上没有,我在测试之前将其添加到我的答案中.

我可以将我的问题减少到DOMXPath::query()我的系统和键盘之间返回的节点顺序不同.

XML: <test>This is some <span>text</span>, fine.</test>

当我查询所有文本节点时//child::text(),结果不同:

Viper键盘:

#0: This is some 
#1: , fine.
#2: text
Run Code Online (Sandbox Code Playgroud)

我的机器:

#0: This is some 
#1: text
#2: , fine.
Run Code Online (Sandbox Code Playgroud)

我不熟悉xpath,我确实理解为什么会发生这种情况以及如何使用PHP实现来影响返回顺序.

编辑:

进一步测试显示LIBXML_VERSION两个系统之间存在差异:

Viper Codepad: 20626 (2.6.26; 6 Jun 2006)
My Machine...: 20707 (2.7.7; 15 Mar 2010)
Run Code Online (Sandbox Code Playgroud)

php xpath libxml2 domdocument

8
推荐指数
2
解决办法
2255
查看次数

libxml2无法从节点获取内容

我在C中使用libxml,这就是我创建xml的方法:

xmlDocPtr createXmlSegment(char *headerContent, char *dataContent)
{
  xmlDocPtr doc;
  doc = xmlNewDoc(BAD_CAST "1.0");
  xmlNodePtr rdt, header, data;
  rdt = xmlNewNode(NULL, BAD_CAST "rdt-segment");
  xmlSetProp(rdt, "id", "1");
  header = xmlNewNode(NULL,BAD_CAST "header");
  data = xmlNewNode(NULL, BAD_CAST "data");
  xmlNodeSetContent(header, BAD_CAST headerContent);
  xmlNodeSetContent(data, BAD_CAST dataContent);
  xmlAddChild(rdt, header);
  xmlAddChild(rdt, data);
  xmlDocSetRootElement(doc, rdt);
  return doc;
}
Run Code Online (Sandbox Code Playgroud)

这就是我想从那个xml获取数据的方式:

int getDataFromXmlSegment(char *data, char *header, char *content)
{
  xmlDocPtr doc = xmlReadMemory(data, strlen(data), NULL, NULL, XML_PARSE_NOBLANKS);
  xmlNode *rdt = doc->children;
  xmlNode *headerNode = rdt->children;
  header = (char *)headerNode->content;
  content = …
Run Code Online (Sandbox Code Playgroud)

c xml libxml2

8
推荐指数
1
解决办法
1万
查看次数

使用XML :: LibXML解析XML的Perl脚本;

我认为这是一个非常简单的问题,但尽管进行了大量搜索,但我无法弄明白.

我试图解析以下XML以打印类似于TAG = VALUE的内容,以便我可以将其写入CSV文件.问题是每个样本的标签并不总是相同.我似乎无法弄清楚如何获得实际的标签名称.任何帮助赞赏!

XML文件 -

<Statistics>
  <Stats>
    <Sample>
        <Name>System1</Name>
        <Type>IBM</Type>
        <Memory>2GB</Memory>
        <StartTime>2012-04-26T14:30:01Z</StartTime>
        <EndTime>2012-04-26T14:45:01Z</EndTime>
    </Sample>

    <Sample>
        <Name>System2</Name>
        <Type>Intel</Type>
        <Disks>2</Disks>
        <StartTime>2012-04-26T15:30:01Z</StartTime>
        <EndTime>2012-04-26T15:45:01Z</EndTime>
        <Video>1</Video>
    </Sample>
  </Stats>
</Statistics>
Run Code Online (Sandbox Code Playgroud)

脚本 -

#!/usr/bin/perl
use XML::LibXML;

$filename = "data.xml";

my $parser = XML::LibXML->new();
my $xmldoc = $parser->parse_file($filename);

for my $sample ($xmldoc->findnodes('/Statistics/Stats/Sample')) {

print $sample->nodeName(), ": ", $sample->textContent(), "\n";

}
Run Code Online (Sandbox Code Playgroud)

xml perl libxml2

8
推荐指数
2
解决办法
4万
查看次数

Nokogiri osx 10.5.8 libxml不兼容的库版本

我试图让Nokogiri在osx 10.5.8上工作,遇到了一个绊脚石.

尝试http://nokogiri.org/tutorials/installing_nokogiri.html 然后http://martinisoftware.com/2009/07/31/nokogiri-on-leopard.html

一位同事一直试图帮助,但无法摆脱这个错误信息:

未加载库:/usr/local/lib/libxml2.2.dylib ...原因:库版本不兼容:nokogiri.bundle需要11.0.0或更高版本,但libxml2.2.dylib提供版本10.0.0

我们尝试使用新安装的库来编译gem,但仍然遇到此错误.

任何帮助或指示真的很感激!

我得到了osx 10.6的副本 - 这有用吗?

谢谢

ruby-on-rails libxml2 nokogiri

8
推荐指数
3
解决办法
6597
查看次数

Gem libxml-ruby(1.1.4)安装但在运行时失败

我正在尝试在Mavericks上运行一个相当旧的Rails应用程序,其中一个要求是: - Ruby ree-1.8.7-2009.10 - Rails 3.0.0 - libxml-ruby 1.1.4(这是与其他版本兼容的最新版本)宝石

我安装了最新的libxml2包.它的版本来自Homebrew(2.9.1).

要安装此gem,我使用以下命令:

$ CC=gcc-4.2 gem install libxml-ruby -v '1.1.4'
Run Code Online (Sandbox Code Playgroud)

输出建议成功:

Building native extensions.  This could take a while...
Successfully installed libxml-ruby-1.1.4
1 gem installed
Run Code Online (Sandbox Code Playgroud)

虽然当我尝试运行一些rake任务时,即创建数据库bundle exec rake db:create

我收到以下错误:

$ bundle exec rake db:create                                                                                               [ree-1.8.7-2009.10@mygemset]
rake aborted!
dlsym(0x7ffa2d83bbe0, Init_libxml_ruby): symbol not found - /Users/myuser/.rvm/gems/ree-1.8.7-2009.10@mygemset/gems/libxml-ruby-1.1.4/lib/libxml_ruby.bundle
/Users/myuser/.rvm/gems/ree-1.8.7-2009.10@mygemset/gems/libxml-ruby-1.1.4/lib/libxml_ruby.bundle
/Users/myuser/.rvm/gems/ree-1.8.7-2009.10@mygemset/gems/activesupport-3.0.20/lib/active_support/dependencies.rb:242:in `require'
/Users/myuser/.rvm/gems/ree-1.8.7-2009.10@mygemset/gems/activesupport-3.0.20/lib/active_support/dependencies.rb:225:in `load_dependency'
/Users/myuser/.rvm/gems/ree-1.8.7-2009.10@mygemset/gems/activesupport-3.0.20/lib/active_support/dependencies.rb:597:in `new_constants_in'
/Users/myuser/.rvm/gems/ree-1.8.7-2009.10@mygemset/gems/activesupport-3.0.20/lib/active_support/dependencies.rb:225:in `load_dependency'
/Users/myuser/.rvm/gems/ree-1.8.7-2009.10@mygemset/gems/activesupport-3.0.20/lib/active_support/dependencies.rb:242:in `require'
/Users/myuser/.rvm/gems/ree-1.8.7-2009.10@mygemset/gems/libxml-ruby-1.1.4/lib/libxml.rb:9
/Users/myuser/.rvm/gems/ree-1.8.7-2009.10@mygemset/gems/activesupport-3.0.20/lib/active_support/dependencies.rb:242:in `require'
/Users/myuser/.rvm/gems/ree-1.8.7-2009.10@mygemset/gems/activesupport-3.0.20/lib/active_support/dependencies.rb:242:in `require'
/Users/myuser/.rvm/gems/ree-1.8.7-2009.10@mygemset/gems/activesupport-3.0.20/lib/active_support/dependencies.rb:225:in `load_dependency'
/Users/myuser/.rvm/gems/ree-1.8.7-2009.10@mygemset/gems/activesupport-3.0.20/lib/active_support/dependencies.rb:597:in `new_constants_in'
/Users/myuser/.rvm/gems/ree-1.8.7-2009.10@mygemset/gems/activesupport-3.0.20/lib/active_support/dependencies.rb:225:in `load_dependency'
/Users/myuser/.rvm/gems/ree-1.8.7-2009.10@mygemset/gems/activesupport-3.0.20/lib/active_support/dependencies.rb:242:in `require'
/Users/myuser/Developer/my-project/vendor/private_gems/restful_authentication-1.4.9/lib/sso/sso.rb:3
/Users/myuser/.rvm/gems/ree-1.8.7-2009.10@mygemset/gems/activesupport-3.0.20/lib/active_support/dependencies.rb:242:in …
Run Code Online (Sandbox Code Playgroud)

ruby ruby-on-rails libxml2 ruby-on-rails-3 osx-mavericks

8
推荐指数
1
解决办法
409
查看次数

libxml2是否支持XSD 1.1

libxml2最新版本是否支持XSD 1.1进行XML验证?

我使用libxml2 v2.6.30进行XSD(schema)1.0的XML验证.但是,我不支持XSD v1.1.我不确定最新版本的libxml2是否支持XSD 1.1.任何的想法?

xml xsd libxml2 xml-validation xsd-1.1

8
推荐指数
1
解决办法
1221
查看次数

找不到包"libxml-2.0"

我试图在我的mac os x中添加libvisio来自https://wiki.documentfoundation.org/DLP/Libraries/libvisio

我已经添加了下面列出的所有依赖:

boost
gperf
icu
librevenge
libxml2
perl
doxygen
Run Code Online (Sandbox Code Playgroud)

添加依赖项后,我试图运行波纹管命令.

$ ./autogen.sh ''# only needed for building from git''
$ ./configure
$ make
$ make install
Run Code Online (Sandbox Code Playgroud)

但我有第二个命令的问题 $ ./configure

得到波纹管错误.

configure: error: Package requirements (
    libxml-2.0
) were not met:

No package 'libxml-2.0' found

Consider adjusting the PKG_CONFIG_PATH environment variable if you
installed software in a non-standard prefix.

Alternatively, you may set the environment variables LIBXML_CFLAGS
and LIBXML_LIBS to avoid the need to call pkg-config.
See the …
Run Code Online (Sandbox Code Playgroud)

unix linux macos libxml2 vsdoc

8
推荐指数
5
解决办法
2万
查看次数

./configure: 错误:HTTP XSLT 模块需要 libxml2/libxslt 库

我最近将我的 mac-os 更新为 Mojave。我正在使用 Nginx,它在我以前的操作系统上运行,但在更新到 Mojave 后,我无法启动我的 Nginx。所以我尝试再次安装它,首先,它给了我 c 编译器错误,所以我下载了 Xcode 命令行工具,它消失了。现在它给了我找不到 libxml2/libxslt 库。我尝试使用 brew 安装它,但仍然出现相同的错误。我不确定出了什么问题。

我已经使用 brew install 下载了 libxml2 和 libxslt。

我的配置脚本。

./configure \
--prefix=/opt/nginx/$NGINX_NAME_VERSION \
--pid-path=/var/run/nginx.pid \
--conf-path=/etc/nginx/$NGINX_NAME_VERSION/conf/nginx.conf \
--error-log-path=/var/log/nginx/error.log \
--http-log-path=/var/log/nginx/access.log \
--lock-path=/var/lock/nginx.lock \
--http-client-body-temp-path=/var/tmp/nginx/body \
--http-fastcgi-temp-path=/var/tmp/nginx/fastcgi \
--http-proxy-temp-path=/var/tmp/nginx/proxy \
--http-scgi-temp-path=/var/tmp/nginx/scgi \
--http-uwsgi-temp-path=/var/tmp/nginx/uwsgi \
--with-debug \
--with-http_addition_module \
--with-http_dav_module \
--with-http_geoip_module \
--with-http_gzip_static_module \
--with-http_realip_module \
--with-http_stub_status_module \
--with-http_ssl_module \
--with-http_sub_module \
--with-http_xslt_module \
--with-mail \
--with-mail_ssl_module \
--with-cc-opt=-I/usr/local/opt/openssl/include \
--with-ld-opt=-L/usr/local/opt/openssl/lib \
--builddir=$NGINX_BUILD_PATH
Run Code Online (Sandbox Code Playgroud)

错误 :

checking …
Run Code Online (Sandbox Code Playgroud)

nginx libxml2 libxslt macos-mojave

8
推荐指数
1
解决办法
6355
查看次数

如何使用go-libxml2更新特定的XML元素值

我想使用go-libxml2更新XML元素值。该元素可以出现在XML文档中的任何位置。例如,在下面的XML中,我想更新一个元素

    <?xml version="1.0" encoding="UTF-8"?>
 - <note>
       <to>Tove</to>
       <from>Jani</Ffrom>
       <heading>Reminder</heading>
       <body>Don't forget me this weekend!</body>
        <url>http://example.com</url>
        <links>
            <url>http://link1.com</url>
            <url>http://link2.com</url>
        </links>
   </note>
Run Code Online (Sandbox Code Playgroud)

我想在所有值中添加其他查询参数。所以我的结果XML将如下

      <?xml version="1.0" encoding="UTF-8"?>
 - <note>
       <to>Tove</to>
       <from>Jani</Ffrom>
       <heading>Reminder</heading>
       <body>Don't forget me this weekend!</body>
        <url>http://example.com?param=value</url>
        <links>
            <url>http://link1.com?param=value</url>
            <url>http://link2.com?param=value</url>
        </links>
   </note>
Run Code Online (Sandbox Code Playgroud)

如何使用go-libxml2修改XML?

xml go libxml2

8
推荐指数
1
解决办法
110
查看次数