【问题标题】:Getting the XML content of a SimpleXMLElement获取 SimpleXMLElement 的 XML 内容
【发布时间】:2011-05-07 22:07:50
【问题描述】:

有没有办法提取 SimpleXMLElement 的“innerHTML”?

例如,我如何使用 SimpleXMLElement 从以下 XML 代码中获取 '<div><h1>Hello World</h1></div>'

<xml>
  <body1>
    <div><h1>Hello World</h1></div>
  </body1>
  <body2>
    <div><h2>Goodby Moon</h2></div>
  </body2>
</xml>

我阅读了文档,我想到的只是$xml-&gt;body1-&gt;asXML();。 这几乎是正确的解决方案,但它也添加了根标签:

 <body1>
   <div><h1>Hello World</h1></div>
 </body1>

是否可以跳过周围的body1标签?


编辑:

xml 也可能如下所示:

<xml>
  <body1>
    <div><h1>Hello World</h1></div>
    <div><h1>Hello Moon</h1></div>
    Some Text
  </body1>
  <body2>
    <div><h2>Goodby Moon</h2></div>
  </body2>
</xml>

如:http://codepad.org/8ZuRYZOW

【问题讨论】:

    标签: php xml simplexml innerhtml


    【解决方案1】:

    如果您确定要查找的是div

    $xml-&gt;body1[0]-&gt;div-&gt;asXML();

    否则

    $xml-&gt;body1[0]-&gt;children()-&gt;asXML();

    http://codepad.org/QUytim28 否则http://codepad.org/hDt28BL6

    【讨论】:

    • (+1) 感谢您的代码。但是,一旦有多个子元素,它就会失败。 codepad.org/EHepjsZg
    • 这就是您需要在问题中提供更多详细信息的原因;)这是解决方案codepad.org/BCxSzP2m
    • 再次感谢!不幸的是,它仍然无法正常工作。我想出了同样的想法,但是它跳过了纯文本。 (见我编辑的问题)
    • 嗯,这不是一个真正有效的 XML 或 HTML。 SimpleXML 使用有效的 XML 很简单,如果使用更复杂的 XML,您应该使用 DOMDocument,或者使其有效,或者不通过 XML 文件。
    • 嗯,嗯,嗯,实际上,codepad.org/m3z15M1p 它的工作原理感谢php.net/manual/fr/simplexmlelement.asXML.php 这个页面的第一条评论。这很丑陋,但仍然......
    【解决方案2】:

    您可能想要children method 或者您想要使用$xml-&gt;body1[ 0 ]-&gt;asXML();(数组访问)

    【讨论】:

    • $xml-&gt;body1[ 0 ]-&gt;asXML();$xml-&gt;body1-&gt;asXML();有区别吗?
    • @Ghommey :如果您的 xml 中有超过 1 个 &lt;body1&gt;,则会出现唯一的区别
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-03-28
    • 1970-01-01
    • 2011-01-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多