2010-12-27 6 views
1

かなり大きなXMLファイルがあります。私はPHPを使用してXML Parserで解析しています。 XMLの解析部分は正常です、私はデータを読むことができます。しかし、私は単一のタグの内容を変更することは考えていません。データ全体を文字列に読み込んで、変更したファイルで書き直す必要がありますか?他の解決策はありますか?私はファイルのサイズのためにsimplexmlを使用したくない。XMLパーサーでXMLコンテンツを変更するPHP

たとえば、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

それは大規模なXMLファイルなので、XMLParserのは正しいツールです。

タグの内容を変更する場合は、変更するタグに遭遇したときに現在のタグ名をstartElementに保存し、contentsに異なる内容を出力する必要があります。

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