DOM, , - , , , , SAX- (event/stream oriented), , (doc, title, url, abstract) node XML .
:
XML- PHP?
( ) :
<?php
$file = "bigfile.xml";
$fh = fopen("out.xml", 'a') or die("can't open file");
$currentNodeTag = "";
$tags = array("doc", "title", "url", "abstract");
function startElement($parser, $name, $attrs) {
global $tags;
if (isset($tags[strtolower($name)])) {
$currentNodeTag = strtolower($name);
fwrite($fh, sprintf("<%s>\n"));
}
}
function endElement($parser, $name) {
global $tags;
if (isset($tags[strtolower($name)])) {
fwrite($fh, sprintf("</%s>\n"));
$currentNodeTag = "";
}
}
function characterData($parser, $data) {
if (!empty($currentNodeTag)) {
fwrite($fh, $data);
}
}
$xmlParser = xml_parser_create();
xml_set_element_handler($xmlParser, "startElement", "endElement");
xml_set_character_data_handler ($xmlParser, "characterData");
if (!($fp = fopen($file, "r"))) {
die("could not open XML input");
}
while ($data = fread($fp, 4096)) {
if (!xml_parse($xmlParser, $data, feof($fp))) {
die(sprintf("XML error: %s at line %d",
xml_error_string(xml_get_error_code($xmlParser)),
xml_get_current_line_number($xmlParser)));
}
}
xml_parser_free($xmlParser);
fclose($fh);
?>