PHP库,用于解析标签名称中带有冒号的XML?
2022-08-30 12:33:49
我一直在尝试使用SimpleXML,但它似乎不喜欢看起来像这样的XML:
<xhtml:div>sample <xhtml:em>italic</xhtml:em> text</xhtml:div>
那么,哪个库将处理看起来像那样的标记(其中有冒号)?
我一直在尝试使用SimpleXML,但它似乎不喜欢看起来像这样的XML:
<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>
您可以像这样访问“它们”:$xml->children('xhtml', true)->div->em;
但是,如果你想要日期字段,this:将不起作用,因为你被困在xhtml命名空间中。$xml->children('xhtml', true)->div->date;
您必须再次执行“子”才能返回到默认命名空间:
$xml->children('xhtml', true)->div->children()->date;
如果你想快速修复它,请这样做(当我感到懒惰时,我会这样做):
// Will replace : in tags and attributes names with _ allowing easy access
$xml = preg_replace('~(</?|\s)([a-z0-9_]+):~is', '$1$2_', $xml);
这将转换为 和 转换为 。有点黑客,如果涉及CDATA NameSpaced XML容器块或UNICODE标签名称,可能会失败,但我想说你通常可以安全地使用它(还没有让我失望)。<xhtml:
<xhtml_
</xhtml:
</xhtml_