Изменение содержимого узла XML

У меня есть XML-контент, как

<?xml version="1.0"?>
<content
ID="immunSect"/>
<table
border="1"width="100%">
<thead>
<tr>
<th>Vaccine</th>
<th>Date</th>
<th>Status</th>
</tr>
</thead>
<tbody>
<tr>
<td><content
ID="immun2"/>Influenza virus vaccine</td>
<td>May 2012</td>
<td>Completed</td>
</tr>
<tr>
<td><content
ID="immun4"/>Tetanus and diphtheria toxoids</td>
<td>April 2012</td>
<td>Completed</td>
</tr>
</tbody>
</table>
</text>

Моя проблема, я хотел бы изменить этот узел

<tbody>
<tr>
<td><content
ID="immun2"/>Influenza virus vaccine</td>

в

<tbody>
<tr>
<td><content
ID="immun2">Influenza virus vaccine</content</td>

Пожалуйста, помогите мне, как я могу получить этот конкретный раздел и изменить структуру узла с

<td><content id="xxx"/>test

в

<td><content id="xxx">test</content>

0

Решение

В основном, при получении данных XML, поместите цикл до EOF, в котором получите каждую строку (@ string1) и проанализируйте ее, переписав ее в новую переменную (@ string2), которую вы можете сохранить в файл XML / что вам нужно с ним. Начните синтаксический анализ @ string1, перемещая все в @ string2, пока не встретите и не проигнорируете его, вместо этого установите флаг в 1. Продолжайте копирование, пока не найдете ввод в @ string2.
Конечно, это можно сделать более элегантным способом, но мне нужно знать, что вы используете для получения данных XML.

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

0

Другие решения

Так как ваш XML имеет неправильный формат, вы не можете использовать инструменты анализа, такие как DOMDocument. Вероятно, ваш единственный выбор — замена регулярных выражений с помощью preg_replace, Это должно работать:

$xml = preg_replace('#<td>(<content.*?)</td>#s', '<td>$1</content></td>', $xml);

Демо на 3v4l.org

0

По вопросам рекламы [email protected]