Изменение содержимого узла XML - PullRequest
0 голосов
/ 04 февраля 2019

У меня есть 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>

Ответы [ 2 ]

0 голосов
/ 04 февраля 2019

Поскольку ваш XML искажен, вы не можете использовать инструменты синтаксического анализа, такие как DOMDocument.Вероятно, ваш единственный выбор - замена регулярного выражения с использованием preg_replace.Это должно работать:

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

Демо на 3v4l.org

0 голосов
/ 04 февраля 2019

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

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

...