标签: libxml2

我使用 Xpath 时命名空间和 libxml 的问题

当我在 XPath 中使用 libxml 时遇到问题。我想解析一个 youtube 播放列表:

<?xml version='1.0' encoding='UTF-8'?>
<feed xmlns='http://www.w3.org/2005/Atom'
  xmlns:openSearch='http://a9.com/-/spec/opensearch/1.1/'
  xmlns:media='http://search.yahoo.com/mrss/'
  xmlns:batch='http://schemas.google.com/gdata/batch'
  xmlns:yt='http://gdata.youtube.com/schemas/2007'
  xmlns:gd='http://schemas.google.com/g/2005'
  gd:etag='W/&quot;Dk8DRn47eCp7ImA9WxRQGEk.&quot;'>
  <id>tag:youtube,2008:user:andyland74:playlists</id>
  <updated>2008-07-21T16:43:25.232Z</updated>
  <category scheme='http://schemas.google.com/g/2005#kind'
    term='http://gdata.youtube.com/schemas/2007#playlistLink'/>
  <title>Playlists of andyland74</title>
  <logo>http://www.youtube.com/img/pic_youtubelogo_123x63.gif</logo>
  <link rel='related' type='application/atom+xml'
    href='http://gdata.youtube.com/feeds/api/users/andyland74?v=2'/>
  <link rel='alternate' type='text/html'
    href='http://www.youtube.com/profile_play_list?user=andyland74'/>
  <link rel='http://schemas.google.com/g/2005#feed'
    type='application/atom+xml'
    href='http://gdata.youtube.com/feeds/api/users/andyland74/playlists?v=2'/>
  <link rel='http://schemas.google.com/g/2005#post'
    type='application/atom+xml'
    href='http://gdata.youtube.com/feeds/api/users/andyland74/playlists?v=2'/>
  <link rel='http://schemas.google.com/g/2005#batch'
    type='application/atom+xml'
    href='http://gdata.youtube.com/feeds/api/users/andyland74/playlists/batch?v=2'/>
  <link rel='self' type='application/atom+xml'
    href='http://gdata.youtube.com/feeds/api/users/andyland74/playlists?...'/>
  <link rel='service' type='application/atomsvc+xml'
    href='http://gdata.youtube.com/feeds/api/users/andyland74/playlists?alt=...'/>
  <author>
    <name>andyland74</name>
    <uri>http://gdata.youtube.com/feeds/api/users/andyland74</uri>
  </author>
  <generator version='2.0'
    uri='http://gdata.youtube.com/'>YouTube data API</generator>
  <openSearch:totalResults>3</openSearch:totalResults>
  <openSearch:startIndex>1</openSearch:startIndex>
  <openSearch:itemsPerPage>25</openSearch:itemsPerPage>
  <entry gd:etag='W/&quot;Dk8DRn47eCp7ImA9WxRQGEk.&quot;'>
    <id>tag:youtube,2008:user:andyland74:playlist:8BCDD04DE8F771B2</id>
    <published>2007-11-04T17:30:27.000-08:00</published>
    <updated>2008-07-15T12:33:20.000-07:00</updated>
    <app:edited xmlns:app='http://www.w3.org/2007/app'>2008-07-15T12:33:20.000-07:00</app:edited>
    <category scheme='http://schemas.google.com/g/2005#kind'
      term='http://gdata.youtube.com/schemas/2007#playlistLink'/>
    <title>My New Playlist …
Run Code Online (Sandbox Code Playgroud)

xpath libxml2

5
推荐指数
1
解决办法
5157
查看次数

使用libxml获取节点的所有属性的列表

我很难找到一种方法来提取节点的所有属性的列表,而不知道它们被称为什么.

我使用以下方法提取单个已知属性:

xmlGetProp(cur, (const xmlChar*)"nodename")

但是如何使用libxml2获取所有属性的列表?

问候,marius

c xml libxml2

5
推荐指数
1
解决办法
6821
查看次数

使用libxml2创建字符串(c ++)

我的问题是我想创建xml树并获得一个简单的字符串对象(甚至是char*).我无法将xml保存到文件中.

所以在输入中我有xmlDocPtr和完整的xml树,并希望得到包含xml但不使用文件的字符串.

请注意.

c++ libxml2

5
推荐指数
1
解决办法
7538
查看次数

如何在没有'extconf failure:需要libxml2'的情况下安装ruby gem libxml

我目前正在尝试安装一个失败的ruby gem,因为extconf说它需要libxml,所以当我按照这些说明安装libxml(包括ruby开发工具包安装的这些说明)时,我得到以下输出:

$ gem install libxml-ruby --platform x86-mswin32-60
Temporarily enhancing PATH to include DevKit...
Building native extensions.  This could take a while...
ERROR:  Error installing libxml-ruby:
    ERROR: Failed to build gem native extension.

    c:/Ruby/bin/ruby.exe extconf.rb
checking for socket() in -lsocket... no
checking for gethostbyname() in -lnsl... no
checking for atan() in -lm... yes
checking for inflate() in -lz... no
checking for inflate() in -lzlib... no
checking for inflate() in -lzlib1... yes
checking for iconv_open() in -liconv... …
Run Code Online (Sandbox Code Playgroud)

ruby windows gem rubygems libxml2

5
推荐指数
1
解决办法
6706
查看次数

无法在Centos 6.2上使用RVM 1.9.3安装nokogiri

/usr/local/rvm/rubies/ruby-1.9.3-p194/lib/ruby/1.9.1/mkmf.rb:381:in `try_do': 
The compiler failed to generate an executable file. (RuntimeError)
You have to install development tools first.
Run Code Online (Sandbox Code Playgroud)

我在CentOS 6.2服务器上使用RVM安装了ruby 1.9.3.当我尝试运行gem install nokogiri它时产生下面的输出.我已经访问了nokogiri网站并使用yum安装了libxml2和libxslt依赖项:

sudo yum install -y gcc ruby-devel libxml2 libxml2-devel libxslt libxslt-devel
Run Code Online (Sandbox Code Playgroud)

我还安装了libxml2和libxslt软件包,rvm pkg install然后重新安装了ruby.

我一直在寻找解决方案,但我还没有找到任何东西.任何想法,将不胜感激 :)

Building native extensions.  This could take a while...
ERROR:  Error installing nokogiri:
        ERROR: Failed to build gem native extension.

        /usr/local/rvm/rubies/ruby-1.9.3-p194/bin/ruby extconf.rb
checking for libxml/parser.h... *** extconf.rb failed ***
Could not create Makefile due to some reason, probably lack …
Run Code Online (Sandbox Code Playgroud)

ruby centos libxml2 nokogiri rvm

5
推荐指数
1
解决办法
7970
查看次数

错误:在构建c应用程序以使用libxml2解析xml时,不能包含iconv.h

我使用libxml2来解析xml但是在编译它抛出的解决方案时

fatal error : cannot open iconv.h

当我把它放在iconv.h那里然后再次重建然后再次抛出其他

error unable to open include file sys/cdefs.h.

我最终陷入了恶性循环.请帮忙

c libxml2

5
推荐指数
1
解决办法
4681
查看次数

lxml._ElementTree.getpath(element) 为非默认命名空间中的元素返回“*”而不是标签名称

请帮助getpath()getpath()xpath 中返回完整的标签名称或找到解决方法

我正在尝试为lxml.etree._ElementTree. ElementTree通过解析来自某些生产 WebService 的 600Kb 响应生成。

print elem.getroottree().getpath(elem)
Run Code Online (Sandbox Code Playgroud)

这是我得到的结果:

'/S:Envelope/S:Body/ns5:getPhysicalResponse/*[18]/*[12]/*[6]/*[2]'
Run Code Online (Sandbox Code Playgroud)

不幸的是,我无法发布原始 xml - 它包含专有的客户信息。此外,我尝试使用自动生成的具有 100 个嵌套级别的简单元素树来重现此结果,每个级别有 100 个子级,但没有运气 -getpath()返回带有完整标签名称的 xpath。

更新 查看lxml 源代码- 它指向库中的tree.h xmlGetNodePath方法libxml2。所以这实际上是libxml2行为。

更新 做更多的测试,我发现每次标签具有非默认命名空间时都会发生这种情况。

c++ python xpath lxml libxml2

5
推荐指数
1
解决办法
738
查看次数

Perl XML :: LibXML:如何访问注释节点

对于我的生活,我无法找到正确的代码来访问我的XML文件中的注释行.难道我用findnodes,find,getElementByTagName(怀疑).

我是否正确地假设这些评论行是可访问的?我希望如此,因为我知道我可以添加评论.

注释节点的类型编号为8,因此它们必须是可解析的.

最终,我想要做的就是删除它们.

my @nodes = $dom->findnodes("//*");

foreach my $node (@nodes) {
  print $node->nodeType, "\n";
}

<TT>
 <A>xyz</A>
 <!-- my comment -->
</TT> 
Run Code Online (Sandbox Code Playgroud)

perl libxml2 xml-libxml

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

如何获取 xmlBuf 以与 xmlBufGetNodeContent/xmlBufNodeDump 等一起使用?

描述xmlNodeDump()(其需要一个xmlBufferPtr)状态:

由于这是使用 xmlBuffer 结构,它被限制为 2GB 并且以某种方式被弃用,请改用 xmlBufNodeDump()。

很公平,但是因为xmlBufNodeDump()(和 eg xmlBufGetNodeContentxmlBufPtr提出了我的问题:如何创建这样的xmlBuf缓冲区?

我找不到任何明显的东西。

以及如何释放它?

我的意思是,因为xmlBuffer有例如xmlBufferCreate()

或者应该获得一个xmlOutputBuffer通孔xmlAllocOutputBuffer()并将其xmlOutputBuffer::buffer 属性(类型xmlBuf*)用于xmlBufNodeDump()

libxml2

5
推荐指数
1
解决办法
810
查看次数

使用命名空间时使用 Perl 和 LibXML 获取子节点值

我以以下 XML 为例:

<root xmlns="http://www.plmxml.org/Schemas/PLMXMLSchema" >
    <parentNode status="Good">
        <A>
            <B>
                <C id="123" >C Node Value Here</C>
            </B>
        </A>
    </parentNode>
</root>
Run Code Online (Sandbox Code Playgroud)

我的 XML 文件中有多个 parentNode 节点(这里只显示了一个),所以我在 parentNode 中循环。一旦我有了一个,我想在 XML 中再获得 3 个级别的属性值。我的 XML 使用名称空间,并且我已在 Perl 脚本中将该名称空间注册为“plm”。我可以在我的路径中使用名称空间来获取 parentNode 属性值。但是,当我尝试向下导航到节点“C”和拾取属性“id”时,出现以下错误:

XPath 错误:未定义的命名空间前缀错误:xmlXPathCompiledEval:评估失败

我正在使用以下 Perl 脚本。

use XML::LibXML;
use XML::LibXML::XPathContext;

my $filename = "namespaceissue.xml";

my $parser = XML::LibXML->new();
my $doc    = $parser->parse_file($filename);
my $xc = XML::LibXML::XPathContext->new( $doc->documentElement()  );
$xc->registerNs('plm', 'http://www.plmxml.org/Schemas/PLMXMLSchema'); 

foreach my $node ($xc->findnodes('/plm:root/plm:parentNode')) {
    my $status  = $node->findvalue('./@status');
    print "Status = $status\n";

    my …
Run Code Online (Sandbox Code Playgroud)

perl libxml2

5
推荐指数
1
解决办法
513
查看次数

标签 统计

libxml2 ×10

c ×2

c++ ×2

perl ×2

ruby ×2

xpath ×2

centos ×1

gem ×1

lxml ×1

nokogiri ×1

python ×1

rubygems ×1

rvm ×1

windows ×1

xml ×1

xml-libxml ×1