相关疑难解决方法(0)

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

我一直在尝试使用SimpleXML,但似乎不喜欢XML看起来像这样:

<xhtml:div>sample <xhtml:em>italic</xhtml:em> text</xhtml:div>
Run Code Online (Sandbox Code Playgroud)

那么什么库会处理看起来像这样的标签(在它们中有冒号)?

php xml namespaces simplexml

32
推荐指数
3
解决办法
3万
查看次数

XML 命名空间和无前缀属性

XML 命名空间规范解释说,无前缀属性的解释由它们出现的元素决定。并且无前缀属性名称的命名空间名称始终没有值

无前缀属性名称的命名空间名称始终没有值。

jid在以下情况下,此规则如何应用于属性的命名空间。

<query xmlns="jabber:iq:roster">
  <item jid="romeo@example.com"></item>
</query>
Run Code Online (Sandbox Code Playgroud)

如果命名空间的声明和相关属性都没有前缀,则该属性jid位于命名空间中jabber:iq:roster

<q:query xmlns:q="jabber:iq:roster">
  <q:item q:jid="romeo@example.com"></q:item>
</q:query>
Run Code Online (Sandbox Code Playgroud)

如果命名空间的声明和属性具有相同的前缀,则属性jid也具有命名空间jabber:iq:roster

<q:query xmlns:q="jabber:iq:roster">
  <q:item jid="romeo@example.com"></q:item>
</q:query>
Run Code Online (Sandbox Code Playgroud)

但是,如果使用前缀声明命名空间但该属性没有前缀,则该属性位于哪个命名空间中?我假设该属性jid

  1. 具有在父元素中声明的默认名称空间,

    <parent xmlns="http://example.com">
      <q:query xmlns:q="jabber:iq:roster">
        <q:item jid="romeo@example.com"></q:item>
      </q:query>
    </parent>
    
    Run Code Online (Sandbox Code Playgroud)
  2. 或者没有命名空间,如果没有这样的声明。

我理解得对吗?

xml xml-namespaces

5
推荐指数
1
解决办法
1858
查看次数

标签 统计

xml ×2

namespaces ×1

php ×1

simplexml ×1

xml-namespaces ×1