読者です 読者をやめる 読者になる 読者になる

PHPのXML_Parser_Simpleで要素名を小文字にする方法

XML_Parser_Simple()を呼ぶ前にfoldingをFalseに設定する。
XML/Parser.phpあたりで、xml_parse_set_option()を呼び出し、XML_OPTION_CASE_FOLDINGに対して$this->foldingを設定している。この値がデフォルトでTrueなので大文字になる。

class myParser extends XML_Parser_Simple {
        var $node;
        function __construct() {
                $this->folding = False; // to lower case
                $this->XML_Parser_Simple();
                $node = array();
        }

        function handleElement($name, $attribs, $data) {
                $this->node[$name] = $data;
        }
}

....

$p = &new myParser();
$p->setInputFile('foo.xml');
if ($p->parse()) {
        var_dump($p->node);
}