Учитывая базу $xml
и файл, содержащий тег <something>
с атрибутами, дочерними элементами и дочерними элементами его дочерних элементов, я хотел бы добавить его как первый ребенок и все его дочерние элементы в качестве необработанного XML.Предоставление необработанного XML с использованием PHP SimpleXML
Оригинальный XML:
<root>
<people>
<person>
<name>John Doe</name>
<age>47</age>
</person>
<person>
<name>James Johnson</name>
<age>13</age>
</person>
</people>
</root>
XML в файле:
<something someval="x" otherthing="y">
<child attr="val" ..> { some children and values ... }</child>
<child attr="val2" ..> { some children and values ... }</child>
...
</something>
Результат XML:
<root>
<something someval="x" otherthing="y">
<child attr="val" ..> { some children and values ... }</child>
<child attr="val2" ..> { some children and values ... }</child>
...
</something>
<people>
<person>
<name>John Doe</name>
<age>47</age>
</person>
<person>
<name>James Johnson</name>
<age>13</age>
</person>
</people>
</root>
Этот тег будет содержать несколько детей как прямые, так и рекурсивно, поэтому было бы нецелесообразно создавать XML через операции SimpleXML. Кроме того, сохранение его в файле приведет к снижению затрат на обслуживание.
Технически это будет просто предпосылка один ребенок. Проблема в том, что у этого ребенка будут другие дети и так далее.
На PHP addChild page есть комментарий, который говорит:
$x = new SimpleXMLElement('<root name="toplevel"></root>');
$f1 = new SimpleXMLElement('<child pos="1">alpha</child>');
$x->{$f1->getName()} = $f1; // adds $f1 to $x
Однако, это, кажется, не относиться к моей XML в качестве исходного XML поэтому вызывает <
и >
спасся теги появляются. Кажется, что появляется несколько предупреждений об пространствах имен.
Я полагаю, что я мог бы быстро заменить такие теги, но я не уверен, может ли это стать причиной будущих проблем, и это, безусловно, не кажется правильным.
Ручной взлом XML не является вариантом, и ни один из них не добавляет детей. Выбор другой библиотеки может быть.
Любые подсказки о том, как это сделать?
Спасибо!
возможно дубликат [SimpleXML, как предварять ребенка в узле?] (HTTP: // stackoverflow.com/questions/2092012/simplexml-how-to-prepend-a-child-in-a-node) – Forien
Моя основная проблема заключается в добавлении необработанного XML, а не в том порядке, в котором добавлен код, хотя это было бы очень желательно, чтобы тег был сверху. Указанный вопрос не касается такой проблемы. Я только что редактировал свой вопрос, чтобы отразить такую разницу. –
Я только что редактировал свой вопрос, чтобы отразить реальную проблему. –