Редактировать XML с помощью simpleXML

Как изменить значение в XML файле с помощью simpleXML?

Я знаю, как создать файл, но не как отредактировать значение в существующем файле?

Ответ 1

Конечно, вы можете редактировать с помощью SimpleXML:

$input = <<<END
<?xml version='1.0' standalone='yes'?>
<documents>
  <document>
    <name>spec.doc</name>
  </document>
</documents>
END;

$xml = new SimpleXMLElement($input);
$xml->document[0]->name = 'spec.pdf';
$output = $xml->asXML();

Взгляните на examples.

Ответ 2

Загрузите XML с помощью SimpleXML и внесите изменения. Затем вы можете использовать метод asXML для сохранения XML в файл (вы передаете имя файла в качестве аргумента):

$xml = new SimpleXMLElement( $xmlString );
// do the manipulation here
$xml->asXML ( '/path/to/your/file.xml' );

Ответ 3

Имейте в виду, что хотя вы можете редактировать XML с помощью SimpleXML, существуют ограничения. Например, вы можете удалить или удалить элемент node или. Вы можете очистить его так, чтобы его пробел, но вы не можете полностью его устранить. Для этого вам нужен DOM или что-то в этом роде.

Ответ 4

Я работаю вот так (это совершенно так, но это может помочь): Файл test.xml может быть любым расширением, если он представляет собой простой XML-текст.

test.xml:

<?xml version="1.0" encoding="utf-8"?>
<sitedata>
    <Texts>
        <ANode SomeAttr="Green" OtherAttr="Small"/>This is the text I'm changing.</ANode>
    </Texts>
</sitedata>

И код PHP:

$xml=simplexml_load_file("test.xml") or die("Error: Cannot create object");
$SomeVar="<b>Text. This supports html code.</b><br/>I also work with variables, like GET or POST.";
$xml->Texts[0]->{'ANode'}=$SomeVar;
$xml->asXml('test.xml');

Результаты test.xml:

<?xml version="1.0" encoding="utf-8"?>
<sitedata>
    <Texts>
    <ANode SomeAttr="Green" OtherAttr="Small"/>&lt;b&gt;Text. This supports html code.&lt;/b&gt;&lt;br/&gt;I also work with variables, like GET or POST.</ANode>
    </Texts>
</sitedata>

Надеюсь, что это поможет!