1

エラー ログが必要です。xml ファイルに対してタグ付けの検証と DTD の検証を行っています。

XML:

    <?xml version="1.0"?>
 <purchaseOrder orderDate="1999-10-20">
    <shipTo country="US">
       <name>Alice Smith</name>
       <street>123 Maple Street</street>
       <city>Mill Valley</city>
       <state>CA</state>
       <zip>90952</zip>
    </shipTo>
     <billTo country="US">
        <name>Robert Smith</name>
        <street>8 Oak Avenue</street>
        <city>Old Town</city>
        <state>PA</state>
        <zip>95819</zip>
     </billTo>
     <comment>Hurry, my lawn is going wild<!/comment>
     <items>
        <item partNum="872-AA">
           <productName>Lawnmower</productName>
           <quantity>1</quantity>
           <USPrice>148.95</USPrice>
           <comment>Confirm this is electric</comment>
        </item>
        <item partNum="926-AA">
           <productName>Baby Monitor</productName>
           <quantity>1</quantity>
           <USPrice>39.98</USPrice>
           <shipDate>1999-05-21</shipDate>
        </item>
     </items>
  </purchaseOrder>

脚本:

    use XML::LibXML;
my $parser = XML::LibXML->new;
$parser->validation(1);
$parser->parse_file("purchase.xml");

不適切なログを取得しました。必要です

Error.log: purchase.xml:行番号: 列番号: エラーテキスト

4

1 に答える 1

0

「不適切なログ」の出力を提供できませんでした。

Try :: Tinyを使用して検証エラーをキャッチし、それらを好みの形式に解析します。

use XML::LibXML;
use Try::Tiny;
my $parser = XML::LibXML->new;
$parser->validation(1);

try {
    $parser->parse_file("purchase.xml");
} catch {
    warn "XML parsing found errors: $_";
    parse_xml_error($_);
};

sub parse_xml_error {
    my $errors = shift;
    # ... left as en exercise for the reader
}
于 2012-10-31T13:44:40.310 に答える