Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用于在标记名中使用冒号解析XML的PHP库?_Php_Xml_Namespaces_Simplexml - Fatal编程技术网

用于在标记名中使用冒号解析XML的PHP库?

用于在标记名中使用冒号解析XML的PHP库?,php,xml,namespaces,simplexml,Php,Xml,Namespaces,Simplexml,我一直在尝试使用,但它似乎不喜欢这样的XML: <xhtml:div>sample <xhtml:em>italic</xhtml:em> text</xhtml:div> 斜体文本示例 那么,哪个库将处理这样的标记(其中包含冒号)?冒号表示XML名称空间。对名称空间有很好的支持。假设您有一些这样的xml <xhtml:div> <xhtml:em>italic</xhtml:em> <date

我一直在尝试使用,但它似乎不喜欢这样的XML:

<xhtml:div>sample <xhtml:em>italic</xhtml:em> text</xhtml:div>
斜体文本示例

那么,哪个库将处理这样的标记(其中包含冒号)?

冒号表示XML名称空间。对名称空间有很好的支持。

假设您有一些这样的xml

<xhtml:div>
  <xhtml:em>italic</xhtml:em>
  <date>2010-02-01 06:00</date>
</xhtml:div>

如果您想快速修复它,请执行此操作(我在感到懒惰时执行此操作):

//将把:in标记和属性名称替换为uu允许轻松访问

$xml=preg_replace(“~”(我认为去掉冒号或按照一些人的建议用其他东西替换它不是一个好主意。您可以轻松访问具有名称空间前缀的元素。您可以将标识名称空间的URL作为参数传递给children()方法,也可以传递名称空间前缀和“true”第二种方法需要PHP5.2及以上版本


SimpleXML可能也会,但OP正在寻找一个标记“xhtml:div”,而不仅仅是“div”。SimpleXML有一些东西可以处理它,但我仍然无法让它正常工作。请发布相关的代码片段。SimpleXML不应该在名称空间方面有任何问题。我在
SimpleXleElement方面也遇到过同样的问题($data)
如果xml数据的标记中有冒号,则返回null。不确定为什么这不是所选的答案。但对于将来的任何人来说,这就是解决我的问题的答案!:)那么多个带有“:”的标记呢?这就是我试图访问它的方式:
$array['body']['Order'['Extensions']['data:AdditionalReferences']['data:YourRef']
这不正是内森·里德(Nathan Reed)在我接受的答案中所建议的吗?我同意regex fu是一个肮脏的黑客,但必须通过
children()
选择器也不是很有趣。是的,同样。我只是想指出,您还可以将标识名称空间的URL传递给children()使用PHP5及以上版本的方法。IMHO,当有一个核心方法可用时,没有必要进行肮脏的黑客攻击。可以工作,但有点黑客。我的
标签的内容和更改的时间
$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);