XML节点内容更改

时间:2019-02-04 11:37:08

标签: php xml xmlnode

我有类似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 :(得分:0)

基本上,在获取XML数据时,将循环放到EOF,在其中获取每行(@ string1)并对其进行解析,然后将其重写为新变量(@ string2),您可以将其保存到XML文件中/随便使用它。开始解析@ string1,将所有内容移动到@ string2,直到遇到并忽略它,而是将标志置于1。继续复制,直到找到然后输入到@ string2为止。 当然可以用更优雅的方式来完成,但是我需要知道您正在使用什么来获取XML数据。

希望有帮助。

答案 1 :(得分:0)

由于XML格式不正确,因此不能使用DOMDocument之类的解析工具。也许您唯一的选择是使用preg_replace进行正则表达式替换。这应该起作用:

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

Demo on 3v4l.org