Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从PERL LibXML解析器获取完整的XML字符串_Xml_Perl_Libxml2 - Fatal编程技术网

从PERL LibXML解析器获取完整的XML字符串

从PERL LibXML解析器获取完整的XML字符串,xml,perl,libxml2,Xml,Perl,Libxml2,我需要处理以下XML <table> <col1>check1</col1> <col2>check2</col2> <col3>check3</col3> <content> <data>gt1</data> <data>check_gt1</data> </content> </table> 上面的代码在节点

我需要处理以下XML

<table>
<col1>check1</col1>
<col2>check2</col2>
<col3>check3</col3>
<content>
    <data>gt1</data>
    <data>check_gt1</data>
</content>
</table>

上面的代码在节点内生成文本内容。如何获取上面提到的数据?

XML::LibXML::Node对象具有。这就是你需要的。我通过快速搜索XML::LibXML文档找到了它

use strict;
use warnings;
use XML::LibXML;

my $xmldata = <<'XML';
<table>
<col1>check1</col1>
<col2>check2</col2>
<col3>check3</col3>
<content>
    <data>gt1</data>
    <data>check_gt1</data>
</content>
</table>
XML

my $parser = XML::LibXML->new();
my $respDom = $parser->parse_string($xmldata);
print "content is "
  . $respDom->getDocumentElement->findnodes("//content")->[0]->toString;

请注意,您可以直接在文档节点上调用
findnodes
$respDom->findnodes(“//content”)
谢谢,是否有任何可能的方法在不进行解析的情况下在perl中仅获取“gt1check_gt1”?请注意,非文档节点上的
toString
会生成未编码的文本。是否有任何可能的方法仅获取perl中的“gt1check_gt1”没有进行解析?我不确定我是否理解@Aravind。从上面的回答中,它提供了“gt1check_gt1”作为结果。是否可能得到“gt1check_gt1”作为结果(没有元素内容)?@Aravind你看过我链接的文档了吗?
use strict;
use warnings;
use XML::LibXML;

my $xmldata = <<'XML';
<table>
<col1>check1</col1>
<col2>check2</col2>
<col3>check3</col3>
<content>
    <data>gt1</data>
    <data>check_gt1</data>
</content>
</table>
XML

my $parser = XML::LibXML->new();
my $respDom = $parser->parse_string($xmldata);
print "content is "
  . $respDom->getDocumentElement->findnodes("//content")->[0]->toString;
content is <content>
    <data>gt1</data>
    <data>check_gt1</data>
</content>
print "content is "
  , $respDom->getDocumentElement->findnodes("//content")->[0]->childNodes->map(sub {$_->toString});