标签: libxml2

使用 perl 的 XML::LibXML 如何使用 XML Prefixes 而不是 xmlns 属性?

我相信这个问题可能以前曾在 2006 年在不同的网站上尝试过。但是,我当前的 XML/RDF 编写器 ( XML::LibXML1.70) 以 xmlns 属性的形式输出元素名称空间。这将排除使用非命名空间感知解析器的人,他们只对foaf:Person. 我想知道是否有人知道在 perl 中实现这一目标的简单方法,首先是使用XML::LibXML. 或者通过不同的方式。

像这样的节点:

  <Person xmlns="http://xmlns.com/foaf/0.1/" rdf:ID="me"/>
Run Code Online (Sandbox Code Playgroud)

和这个:

  <name xmlns="http://xmlns.com/foaf/0.1/">Evan Carroll</name>
Run Code Online (Sandbox Code Playgroud)

应该看起来像:

  <foaf:Person rdf:ID="me"/>
  <foaf:name>Evan Carroll</name>
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?我相信无论哪种方式在技术上都是正确的,但我宁愿不依赖其他人知道这一点。昨天我自己也不知道。

xml perl xml-namespaces libxml2

2
推荐指数
1
解决办法
2360
查看次数

libXML轻松解析HTML

我试图从HTML页面中删除一些内容.我正在使用libxml2和htmlReadMemory来获取xmlDocPtr.HTML很简单,但是有问题.它基本上如下:

<tr><td><tr><td>Some content</td></tr></td></tr>
Run Code Online (Sandbox Code Playgroud)

libxml不喜欢嵌套的tr,tds.它一直给我以下错误:

HTML parser error : Unexpected end tag : td
      </TD>
           ^
HTML parser error : Unexpected end tag : tr
    </TR>
Run Code Online (Sandbox Code Playgroud)

我使用以下选项:HTML_PARSE_RECOVER.

在这一点上,我没有做任何事情允许libxml解析HTML因为这个.我无法更改HTML,因为我无法访问它.

任何人都有任何线索如何让libxml解析这种HTML?

谢谢

iphone libxml2

2
推荐指数
1
解决办法
1383
查看次数

如何处理 libxml2 解析器错误

我必须将 xsd(架构)验证与 libxml2 结合使用,我可以使用 xmlSchemaSetValidErrors() 设置错误处理回调,以处理架构验证错误。

但在进行模式验证之前,我必须解析我的 xml,以获取 xmlDocPtr,例如使用 xmlParseMemory。但是:如果 xml 无效怎么办,如何设置错误处理程序来获取这些错误?(我不想将它们打印到 stderr)我没有找到类似于 xmlSchemaSetValidErrors 的解析函数。

c libxml2

2
推荐指数
1
解决办法
5075
查看次数

Nokogiri没有安装?

我似乎无法在我的Mac OS X 10.8系统上安装Nokogiri.我知道这个解决方案有一个解决方法,解决方法是:

NOKOGIRI_USE_SYSTEM_LIBRARIES=1 bundle install
Run Code Online (Sandbox Code Playgroud)

但我宁愿解决它,因为每次我做一个捆绑,它都会失败.这是问题所在:

$ gem install nokogiri

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

    /Users/buf/.rvm/rubies/ruby-2.0.0-p195/bin/ruby extconf.rb
Extracting libxml2-2.8.0.tar.gz into tmp/x86_64-apple-darwin12.5.0/ports/libxml2/2.8.0... OK
Running 'configure' for libxml2 2.8.0... ERROR, review 'tmp/x86_64-apple-darwin12.5.0/ports/libxml2/2.8.0/configure.log' to see what happened.
*** extconf.rb failed ***
Could not create Makefile due to some reason, probably lack of necessary
libraries and/or headers.  Check the mkmf.log file for more details.  You may
need configuration …
Run Code Online (Sandbox Code Playgroud)

ruby libxml2 nokogiri osx-mountain-lion

2
推荐指数
1
解决办法
1138
查看次数

如何避免 XML::LibXML 中的双重 UTF-8 编码

我的程序从数据源接收 UTF-8 编码的字符串。我需要篡改这些字符串,然后将它们作为 XML 结构的一部分输出。当我序列化我的 XML 文档时,它将被双重编码并因此被破坏。当我只序列化根元素时,它会很好,但当然缺少标题。

这是一段试图将问题可视化的代码:

use strict; use diagnostics;    use feature 'unicode_strings';
use utf8;   use v5.14;      use encoding::warnings;
binmode(STDOUT, ":encoding(UTF-8)");    use open qw( :encoding(UTF-8) :std );
use XML::LibXML

# Simulate actual data source with a UTF-8 encoded file containing '¿Üß?çñíïì'
open( IN, "<", "./input" ); my $string = <IN>; close( IN ); chomp( $string );
$string = "Value of '" . $string . "' has no meaning";

# create example XML document as <response><result>$string</result></response>
my $xml = …
Run Code Online (Sandbox Code Playgroud)

perl utf-8 libxml2

2
推荐指数
1
解决办法
2526
查看次数

无法使用 libxml2 和 xpath 获取节点

我有以下一段代码可以从 HTML 页面中查找所有元素:

string AParser::cleanHTMLDocument(const string& aDoc) {
   vector<xmlNodePtr> nodesToRemove;
   xmlDocPtr doc = xmlParseDoc((xmlChar *)aDoc.c_str());
   xmlXPathContextPtr context = xmlXPathNewContext(doc);
   xmlXPathObjectPtr result = xmlXPathEvalExpression(
                                 (const xmlChar *)string("//link").c_str(), context);
   if (xmlXPathNodeSetIsEmpty(result->nodesetval)) {
       xmlXPathFreeObject(result);
       xmlXPathFreeContext(context);
       xmlFreeDoc(doc);
       LOG(WARNING)<< "XPath is invalid, bailing out.";
       return string();
   }
   const int size = result->nodesetval->nodeNr;
   for(int i = size - 1; i >= 0; i--) {
      LOG(DEBUG)<< result->nodesetval->nodeTab[i]->name;
   }
}
Run Code Online (Sandbox Code Playgroud)

但出于某种原因xmlXPathNodeSetIsEmpty总是如此。我在这里错过了什么吗?

更新:输入文档

<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE html PUBLIC '-//W3C//DTD XHTML 1.1//EN' 'http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd'>
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head> …
Run Code Online (Sandbox Code Playgroud)

c++ xpath libxml2

2
推荐指数
1
解决办法
1233
查看次数

如何从xsltproc输出iso-8859-1 charset?

我已经使用xsltproc将一些xml转换为另一个xml.

xsltproc iso8859_1.xslt iso8859.xml 
Run Code Online (Sandbox Code Playgroud)

并且重音符不正确(我的Linux中的$ LANG是en_US.ISO-8895-1).

如果我使用

xsltproc iso8859_1.xslt iso8859.xml \
| iconv --from-code=utf-8 --to-code=iso-8859-1
Run Code Online (Sandbox Code Playgroud)

重点出现正确.(也在我生成的HTML文档中)

在xsltproc命令之后如何在不调用新管道的情况下正确显示重音符号?

xslt encoding character-encoding libxml2

2
推荐指数
1
解决办法
2245
查看次数

我可以将 libxml2 导入 Visual Studio 2013

我正在为 C# 项目创建自定义 SOAP 解析器。

我想将 libxml2 (一个纯 c 库)导入到我的项目中。这可行吗?

.NET 中有 C# 替代品吗?有 libxml2 的 C# 端口吗?

.net c# libxml2 visual-studio visual-studio-2013

2
推荐指数
1
解决办法
2475
查看次数

XML:从按元素剪切的文本中获取字符串数组

我需要从节点中的文本中获取一个字符串数组,该节点本身被 xml 文件中的其他元素剪切。我在 C 语言中使用 libxml2 库。

例子:
<option>some text <middletag />other text</option>

我试过了,xmlNodeGetContent(xmlnode);但我只得到一个像"some text other text".

问题是:是否有可能获得一个字符串数组,在这个例子中,它将是{"some text ", "other text"}

c xml libxml2

2
推荐指数
1
解决办法
179
查看次数

如何解决 Windows 上“gem install ovirt-engine-sdk”上的“libxml2 missing package”错误?

我正在尝试gem install ovirt-engine-sdk在 Windows 10 机器上运行,但我面临以下问题:

extconf.rb:29:in `<main>': The "libxml2" package isn't available. (RuntimeError)

To see why this extension failed to compile, please check the mkmf.log which can
be found here:

C:/Ruby25-x64/lib/ruby/gems/2.5.0/extensions/x64-mingw32/2.5.0/ovirt-engine-sdk-4.2.5/mkmf.log

extconf failed, exit code 1

Gem files will remain installed in
C:/Ruby25-x64/lib/ruby/gems/2.5.0/gems/ovirt-engine-sdk-4.2.5 for inspection.
Results logged to
C:/Ruby25-x64/lib/ruby/gems/2.5.0/extensions/x64-mingw32/2.5.0/ovirt-engine-sdk-4.2.5/gem_make.out

An error occurred while installing ovirt-engine-sdk (4.2.5), and Bundler cannot
continue.
Make sure that `gem install ovirt-engine-sdk -v '4.2.5'` succeeds before
bundling.

In Gemfile:
  fog was resolved to …
Run Code Online (Sandbox Code Playgroud)

ruby rubygems libxml2 libxml-ruby ovirt

2
推荐指数
1
解决办法
1657
查看次数