使用XML Parser PHP修改XML内容

时间:2010-12-27 15:08:02

标签: xml file parsing

我有一个非常大的XML文件。我正在使用PHP Parser使用Php解析它。 XML解析部分没关系,我可以读取数据。但是,我不知道修改单个标签的内容。我应该将整个数据读入一个字符串并用修改后的文件重写该文件吗?还有其他解决方案吗?由于文件的大小,我不想使用simplexml。

例如,我想将Jack更改为其他用户的名字。

插口

谢谢..

到目前为止:

$file = "5.xml";



function startElement($parser, $name, $attrs) 
{
//do something

}

function contents($parser, $data){
//do something

} 

function endElement($parser, $name) 
{
//do something
}


$xml_parser = xml_parser_create();
xml_set_element_handler($xml_parser, "startElement", "endElement");
xml_set_character_data_handler($xml_parser, "contents"); 
if (!($fp = fopen($file, "r"))) {
    die("could not open XML input");
}

while ($data = fread($fp, 4096)) {
    if (!xml_parse($xml_parser, $data, feof($fp))) {
        die(sprintf("XML error: %s at line %d",
                    xml_error_string(xml_get_error_code($xml_parser)),
                    xml_get_current_line_number($xml_parser)));
    }
}
xml_parser_free($xml_parser);

1 个答案:

答案 0 :(得分:0)

由于它是一个大型XML文件,因此XMLParser是正确的工具。

如果您想更改代码的内容,则需要在startElement中保存当前代码名称,并在遇到要修改的代码时在contents中输出不同的内容。

startElement: $this->currentTag = $name;
contents: $this->currentTag == 'myspecialtag' ? print(md5($data)) : print($data);