我有一个非常大的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);
答案 0 :(得分:0)
由于它是一个大型XML文件,因此XMLParser是正确的工具。
如果您想更改代码的内容,则需要在startElement
中保存当前代码名称,并在遇到要修改的代码时在contents
中输出不同的内容。
startElement: $this->currentTag = $name;
contents: $this->currentTag == 'myspecialtag' ? print(md5($data)) : print($data);