#!/usr/bin/perl
use strict;
use warnings;
use XML::LibXML;

my $XML = <<"EOT";
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE title [ <!ELEMENT title ANY >
<!ENTITY xxe SYSTEM "file:///etc/passwd" >]>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
<channel>
    <title>XXE</title>
    <link>example.com</link>
    <description>XXE</description>
    <item>
        <title>&xxe;</title>
        <link>example.com</link>
        <description>XXE here</description>
    </item>
</channel>
</rss>
EOT

my $parser = XML::LibXML->new(
    expand_entities => 0,
    load_ext_dtd    => 0,
    no_network      => 1,
    expand_xinclude => 0,
);
my $XML_DOC = $parser->load_xml( string => $XML, );

print "***\n";
print "Perl version: " . $^V . "\n";
print "libxml2 version: " . XML::LibXML::LIBXML_DOTTED_VERSION . "\n";
print "XML::LibXML version: " . $XML::LibXML::VERSION . "\n";
print "***\n";
print $XML_DOC->toString();
print "***\n";

