PHP5.1.0から"not well-formed XML"を扱えるんだっけ?

ChangeLogを見てたら気になる箇所が。

Added DomDocument::$recover property for parsing not well-formed XML Documents. (Christian)
PHP: PHP 5 ChangeLog

DomDocumentとあるけどDOMDocumentのtypo(?)だろうという事で、DOMDocumentでテスト。

<?php
 
$input  = basename(__FILE__, ".php") . ".xml";
$output = basename(__FILE__, ".php") . "_output.xml";
 
$doc = new DOMDocument();
 
echo "==> DOMDocument::recover = false(default).\n";
$doc->loadXML("<parent>hoge<child></parent>foo</child>");
echo $doc->saveXML() . "\n";
 
echo "==> DOMDocument::recover = true.\n";
$doc->recover = true;
$doc->loadXML("<parent>hoge<child></parent>foo</child>");
echo $doc->saveXML() . "\n";
 
?>
==> DOMDocument::recover is false.

Warning: DOMDocument::loadXML(): Opening and ending tag mismatch: child line 1 and parent in Entity, line: 1 in not_well_formed_xml_parser.php on line 8

Warning: DOMDocument::loadXML(): Opening and ending tag mismatch: parent line 1 and child in Entity, line: 1 in not_well_formed_xml_parser.php on line 8

<?xml version="1.0"?>

==> DOMDocument::recover is true.

Warning: DOMDocument::loadXML(): Opening and ending tag mismatch: child line 1 and parent in Entity, line: 1 in not_well_formed_xml_parser.php on line 12

Warning: DOMDocument::loadXML(): Opening and ending tag mismatch: parent line 1 and child in Entity, line: 1 in not_well_formed_xml_parser.php on line 12

<?xml version="1.0"?>
<parent>hoge<child/>foo</parent>

出来てるのか?一応、recoverプロパティをfalse/trueで切り替えてloadXMLし直してるんだけど、微妙。どういう修復ルールが正しいんだ?そもそも、検証方法(上記の確認スクリプト)が正しいのかよく分かりません。

さて、これの出番はあるだろうか?

プロフィール

このブログ記事について

このページは、koshigoeが2006年12月 2日 23:38に書いたブログ記事です。

ひとつ前のブログ記事は「CNET Japanのふざけたフィードは何事?」です。

次のブログ記事は「PHPのSPLにはSplObjectStorageってのがあるんだね」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。