2013-02-28 73 views
3

我需要在Perl中解析XML文件。文件的一部分單獨存儲,並作爲系統實體插入。不過,這個問題很常見。但是,我無法獲得任何信息如何解決它。Perl,SAX和系統實體

<?xml version="1.0"?> 
<!DOCTYPE RootNode [ 
    <!ENTITY externalContent SYSTEM "ext.txt"> 
]> 
<RootNode xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../release/bin/schenma.xsd"> 
    &externalContent; 
</RootNode> 

使用Pure Perl SAX解析此文件時,我只獲取有關元素和字符的信息。實體被作爲人物處理器處理。它被引用的文本取代,它也被內部實體替換爲ext.txt。 SYSTEM關鍵字似乎被忽略。

回答

1

使用Pure Perl SAX至關重要嗎? 我試過XML::LibXMLXML::Parser,他們都正確地用外部實體處理XML。

use XML::LibXML; 
my $document = XML::LibXML->load_xml(location => 'file.xml'); 
print $document->toString();