我有這樣的「file.xml如何在perl中使用xml :: libxml檢索xml的所有節點?
<tables>
<table>
<name>abc</name>
<row>12</row>
<col>13</col>
<table>
<name>xyz</name>
<IsWrapper/>
<table>
<name>dummy</name>
<row>121</row>
<col>131</col>
</table>
</table>
</tables>
I am using xml::libxml using perl. Here is the code.
# ----- Parsing config XML file ---
my $parser = XML::LibXML->new();
my $xmldoc = $parser->parse_file ("file.xml") || die("Could not parse xml file\n");
my $root = $xmldoc->getDocumentElement()|| die("Could not get Document Element \n");
print "\n root = $root \n";
if ($root->nodeType == ELEMENT_NODE)
{
foreach my $child ($root->getChildNodes())
{
#print "\n my child: $child \n";
$st = $child->textContent;
print "\n child name: $st \n";
if ($child->nodeName eq 'table')
{
$dc = $child->nodeName;
print "\n node name is node: $dc\n";
if (defined($child->getElementsByTagName('IsWrapper',0)->item(0)))
{
#do some thing
}
else
{
print "\n eneterd in else part\n";
#do some thing
}
}
}
}
一個XML文件,但我不能讓主節點。我能夠得到的只有這個結構。
<table>
<name>xyz</name>
<IsWrapper/>
<table>
<name>dummy</name>
<row>121</row>
<col>131</col>
</table>
</table>
我怎麼能獲得結構中的所有元素以相同的順序。
輸出應該是這樣的
<tables>
<table><name>abc</name>
<row>12</row>
<col>13</col>
<name>xyz</name>
<row>121</row>
<col>131</col>
</table>
</tables>
如何解析上述XML並使用Perl在libxml中獲取以下輸出?
幫助非常感謝。
OK OK ....但如何將得到所有的節點,因爲引用是file.xml繼續進行所以下面的輸出。請讓我知道如何在獲取所有節點時繼續使用xml :: libxml。 – user760857 2011-05-26 03:26:44
如果一個XML文檔的格式不是一個XML文檔,那麼它就不能被當作一個XML文檔處理。告訴創建這個的人去學習一些關於XML的知識或者不使用它,因爲當你使用XML-Parsers時,格式良好是必須的。我想你必須爲這個破損的XML寫你自己的解析器。 – AlexTheBird 2011-05-26 16:40:22