我一直在尝试使用SimpleXML,但它似乎不喜欢这样的XML格式:
那么,哪个库可以处理那样的标签(其中有冒号)?
<xhtml:div>sample <xhtml:em>italic</xhtml:em> text</xhtml:div>
那么,哪个库可以处理那样的标签(其中有冒号)?
<xhtml:div>sample <xhtml:em>italic</xhtml:em> text</xhtml:div>
假设你有一个类似这样的 XML。
<xhtml:div>
<xhtml:em>italic</xhtml:em>
<date>2010-02-01 06:00</date>
</xhtml:div>
您可以像这样访问'em':$xml->children('xhtml', true)->div->em;
但是,如果您想要日期字段,这个代码 $xml->children('xhtml', true)->div->date;
将不起作用,因为您被困在xhtml命名空间中。
您必须再次执行'children'以返回默认命名空间:
$xml->children('xhtml', true)->div->children()->date;
$array['body']['Order']['Extensions']['data:AdditionalReferences']['data:YourRef']
。 - user2924019如果您想快速解决它,请执行以下操作(当我感到懒时,我会这样做):
// Will replace : in tags and attributes names with _ allowing easy access
$xml = preg_replace('~(</?|\s)([a-z0-9_]+):~is', '$1$2_', $xml);
这将把<xhtml:
转换为<xhtml_
,将</xhtml:
转换为</xhtml_
。这种方法有些hacky,如果涉及到CDATA命名空间XML容器块或UNICODE标记名称,则可能会失败,但我认为通常情况下使用它是安全的 (至少迄今为止没有让我失望)。
<pubDate>
标签的内容并改变了时间。 - supersan冒号表示XML命名空间。 DOM 对命名空间有很好的支持。
children()
选择器也不是很有趣。 - mpen
SimpleXMLElement($data)
会返回null。 - Jake Wilson