Я новичок в PHP и ничего не знаю о манипулировании XML. Я работаю над XML-аннотацией Google CSE, показанной ниже:
<?xml version="1.0" encoding="UTF-8" ?>
- <Annotations>
- <Annotation about="http://sanspace.in/">
<Label name="_cse_byxamvbyjpc" />
</Annotation>
- <Annotation about="http://blog.sanspace.in/">
<Label name="_cse_byxamvbyjpc" />
</Annotation>
- <Annotation about="http://google.com/">
<Label name="_cse_exclude_byxamvbyjpc" />
</Annotation>
</Annotations>
Я хочу добиться этого из показанного выше файла:
<?xml version="1.0" encoding="UTF-8" ?>
- <Annotations>
- <Annotation about="http://sanspace.in/">
<Label name="testString1" />
</Annotation>
- <Annotation about="http://blog.sanspace.in/">
<Label name="testString2" />
</Annotation>
- <Annotation about="http://google.com/">
<Label name="testString2" />
</Annotation>
</Annotations>
До сих пор я пробовал:
<?php
if (file_exists('test.xml'))
{
$xml = simplexml_load_file('test.xml');
}
else
{
exit('Error.');
}
foreach($xml->Annotation as $annotation)
{
if ($annotation["about"]=="http://sanspace.in/")
{ $annotation->Label["name"]="testString1"; }
else
{ $annotation->Label["name"]="testString2"; } }
$dom = new DOMDocument('1.0');
$dom->preserveWhiteSpace = false;
$dom->formatOutput = true;
$dom->loadXML($xml->asXML());
echo $dom->saveXML();
$dom->save("test.xml");
?>
Этот код выполняет задачу, но не сохраняет ее в файл.
Мой вопрос: что не так с оператором $dom->save("test.xml");
? Как сохранить файл XML на сервере?
error_reporting(-1);
и убедитесь, что в вашем php.ini включеныdisplay_errors
иdisplay_startup_errors
. Затем перезагрузите страницу, чтобы увидеть, выдает ли она какие-либо ошибки. - person Gordon   schedule 28.07.2010error_reporting(-1)
в качестве вызова функции поверх своих скриптов. Настройки ini можно включить черезini_set
. - person Gordon   schedule 28.07.2010error_reporting(-1);
. Тем не менее я получаю ту же пустую страницу. XML остается прежним. Должен ли я использовать какой-либо классXMLWriter
для редактирования файла xml? - person San   schedule 28.07.2010