3

Perl で XML ファイルを解析する必要があります。ファイルの一部は別に保存され、システムエンティティとして挿入されます。ただし、問題は非常に一般的です。しかし、私はそれを解決する方法についての情報を得ることができません。

<?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 キーワードは無視されているようです。

4

1 に答える 1

1

Pure Perl SAX を使用することは重要ですか? 私はXML::LibXMLXML::Parserを試しましたが、どちらも外部エンティティを含む XML を正しく処理しました。

use XML::LibXML;
my $document = XML::LibXML->load_xml(location => 'file.xml');
print $document->toString();
于 2013-03-12T15:37:35.320 に答える