首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHP SimpleXML获取innerXML

PHP SimpleXML获取innerXML
EN

Stack Overflow用户
提问于 2009-12-21 05:10:08
回答 11查看 10.6K关注 0票数 10

我需要在这段XML中获得answer的HTML内容:

代码语言:javascript
复制
<qa>
 <question>Who are you?</question>
 <answer>Who who, <strong>who who</strong>, <em>me</em></answer>
</qa>

所以我想得到字符串"Who who,who who,me“。

如果我将answer作为SimpleXMLElement,我可以调用asXML()来获取“谁,谁,我”,但是如何在没有元素本身的情况下获取元素的内部XML呢?

我更喜欢不涉及字符串函数的方法,但如果这是唯一的方法,那就这样吧。

EN

回答 11

Stack Overflow用户

回答已采纳

发布于 2009-12-21 11:22:40

据我所知,没有内置的方法可以做到这一点。我推荐尝试使用SimpleDOM,它是一个扩展了SimpleXMLElement的PHP类,它为大多数常见问题提供了方便的方法。

代码语言:javascript
复制
include 'SimpleDOM.php';

$qa = simpledom_load_string(
    '<qa>
       <question>Who are you?</question>
       <answer>Who who, <strong>who who</strong>, <em>me</em></answer>
    </qa>'
);
echo $qa->answer->innerXML();

否则,我认为有两种方法可以做到。第一种方法是将SimpleXMLElement转换为DOMNode,然后循环遍历其childNodes以构建SimpleXMLElement。另一种方法是调用asXML(),然后使用字符串函数删除根节点。注意,asXML()有时可能会返回实际位于调用它的节点之外的标记,例如XML prolog或处理指令。

票数 5
EN

Stack Overflow用户

发布于 2011-08-20 09:33:32

代码语言:javascript
复制
function SimpleXMLElement_innerXML($xml)
  {
    $innerXML= '';
    foreach (dom_import_simplexml($xml)->childNodes as $child)
    {
        $innerXML .= $child->ownerDocument->saveXML( $child );
    }
    return $innerXML;
  };
票数 13
EN

Stack Overflow用户

发布于 2010-09-02 12:05:17

这是可行的(尽管它看起来确实很差劲):

代码语言:javascript
复制
echo (string)$qa->answer;
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1937056

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档