У меня есть 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>
В основном, при получении данных XML, поместите цикл до EOF, в котором получите каждую строку (@ string1) и проанализируйте ее, переписав ее в новую переменную (@ string2), которую вы можете сохранить в файл XML / что вам нужно с ним. Начните синтаксический анализ @ string1, перемещая все в @ string2, пока не встретите и не проигнорируете его, вместо этого установите флаг в 1. Продолжайте копирование, пока не найдете ввод в @ string2.
Конечно, это можно сделать более элегантным способом, но мне нужно знать, что вы используете для получения данных XML.
Надеюсь, это поможет.
Так как ваш XML имеет неправильный формат, вы не можете использовать инструменты анализа, такие как DOMDocument. Вероятно, ваш единственный выбор — замена регулярных выражений с помощью preg_replace
, Это должно работать:
$xml = preg_replace('#<td>(<content.*?)</td>#s', '<td>$1</content></td>', $xml);