我需要在这段XML中获得answer的HTML内容:
<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呢?
我更喜欢不涉及字符串函数的方法,但如果这是唯一的方法,那就这样吧。
发布于 2009-12-21 11:22:40
据我所知,没有内置的方法可以做到这一点。我推荐尝试使用SimpleDOM,它是一个扩展了SimpleXMLElement的PHP类,它为大多数常见问题提供了方便的方法。
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或处理指令。
发布于 2011-08-20 09:33:32
function SimpleXMLElement_innerXML($xml)
{
$innerXML= '';
foreach (dom_import_simplexml($xml)->childNodes as $child)
{
$innerXML .= $child->ownerDocument->saveXML( $child );
}
return $innerXML;
};发布于 2010-09-02 12:05:17
这是可行的(尽管它看起来确实很差劲):
echo (string)$qa->answer;https://stackoverflow.com/questions/1937056
复制相似问题