douwen3973
2017-11-23 14:36
浏览 50

避免使用PHP在xml节点中删除标记元素

I want to parse a DocBook XML file with PHP. SimpleXMLElement cuts off some markup elements.

<section>
<title>SUSPEND</title>
    <para>The <database>SUSPEND</database> command <quote>breaks</quote> the atomicity of the block in which it is located.</para>
    <para>...</para>
</section>

I use this code to parse my para elements:

$paras = $xml->xpath("//*[starts-with(local-name(), 'para')]");
foreach($paras as $para) {
   echo $para[0];
}

This cuts off my markup

<database>SUSPEND</database> and <quote>breaks</quote>

resulting in

The command the atomicity of the block in which it is located.

But what I need is:

The <database>SUSPEND</database> command <quote>breaks</quote> the atomicity of the block in which it is located.

So how can I get the whole node including its elements as string?

图片转代码服务由CSDN问答提供 功能建议

我想用PHP解析DocBook XML文件。 SimpleXMLElement切断了一些标记元素。

 &lt; section&gt; 
&lt; title&gt; SUSPEND&lt; / title&gt; 
&lt; para&gt;&lt; database&gt; SUSPEND&lt; / database&gt  ; 命令&lt; quote&gt; break&lt; / quote&gt; 它所在的块的原子性。&lt; / para&gt; 
&lt; para&gt; ...&lt; / para&gt; 
&lt; / section&gt; 
   
 
  

我使用此代码来解析我的para元素:

  $ paras = $ xml-&gt; xpath(“// * [starts-with(local-name(  ),'para')]“); 
foreach($ para as $ para){
 echo $ para [0]; 
} 
   
 
 

这 切断我的标记

 &lt; database&gt; SUSPEND&lt; / database&gt; 和&lt; quote&gt;中断&lt; / quote&gt; 
   
 
 

导致

 命令块的原子性 它位于。
   
 
 

但我需要的是:

 &lt; database&gt; SUSPEND&lt;  /数据库&GT; 命令&lt; quote&gt; break&lt; / quote&gt; 它位于其中的块的原子性。
   
 
 

那么如何将整个节点包括其元素作为字符串?

  • 写回答
  • 好问题 提建议
  • 追加酬金
  • 关注问题
  • 邀请回答

1条回答 默认 最新

  • duanqie5741 2017-11-23 14:56
    最佳回答

    Just use asXML method to get tree with root at element found

    foreach($paras as $para) {
       echo $para->asXML();
    }
    
    评论
    解决 无用
    打赏 举报