我把它作为xml:
<root xmlns:event="http://www.webex.com/schemas/2002/06/service/event">
<event:event>
<event:sessionKey></event:sessionKey>
<event:sessionName>Learn QB in Minutes</event:sessionName>
<event:sessionType>9</event:sessionType>
<event:hostWebExID></event:hostWebExID>
<event:startDate>02/12/2009</event:startDate>
<event:endDate>02/12/2009</event:endDate>
<event:timeZoneID>11</event:timeZoneID>
<event:duration>30</event:duration>
<event:description></event:description>
<event:status>NOT_INPROGRESS</event:status>
<event:panelists></event:panelists>
<event:listStatus>PUBLIC</event:listStatus>
</event:event>
...
</root>
Run Code Online (Sandbox Code Playgroud)
我如何遍历所有事件:事件节点和显示,例如,所有事件:SessionKey?
这不起作用:
$xml = new SimpleXMLElement($r);
$xml->registerXPathNamespace('e', 'http://www.webex.com/schemas/2002/06/service/event');
foreach($xml->xpath('//e:event') as $event) {
var_export($event->xpath('//e:sessionKey'));
}
Run Code Online (Sandbox Code Playgroud) 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
具有在父元素中声明的默认名称空间,
<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)
或者没有命名空间,如果没有这样的声明。
我理解得对吗?
我有这样的事情:
$x = simplexml_load_file('myxml.xml');
[...]
foreach($x->y->z[0]->w->k as $k){
[...]
}
Run Code Online (Sandbox Code Playgroud)
我的XML文件类似于:
<x>
<y>
<z>
<w>
<k prefix:name="value">
[...]
</k>
</w>
[...]
</z>
[...]
</y>
[...]
</x>
Run Code Online (Sandbox Code Playgroud)
现在,我想访问我的k元素的属性.在我的foreach中,我有红色,我可以使用它来访问它:
$k['prefix:name']
Run Code Online (Sandbox Code Playgroud)
但它不起作用.我做错了什么?
我在我的k元素中添加了一个假属性并且它有效,我认为问题是我尝试访问的属性位于不同的命名空间中:
<k xsi:type="value">
[...]
</k>
Run Code Online (Sandbox Code Playgroud) 我正在尝试从[此URL(加载相当长的时间)] [1]中获取以下节点的值。我感兴趣的元素是:
title, g:price and g:gtin
Run Code Online (Sandbox Code Playgroud)
XML开始如下:
<rss xmlns:g="http://base.google.com/ns/1.0" version="2.0">
<channel>
<title>PhotoSpecialist.de</title>
<link>http://www.photospecialist.de</link>
<description/>
<item>
<g:id>BEN107C</g:id>
<title>Benbo Trekker Mk3 + Kugelkopf + Tasche</title>
<description>
Benbo Trekker Mk3 + Kugelkopf + Tasche Das Benbo Trekker Mk3 ist eine leichte Variante des beliebten Benbo 1. Sein geringes Gewicht macht das Trekker Mk3 zum idealen Stativ, wenn Sie viel draußen fotografieren und viel unterwegs sind. Sollten Sie in eine Situation kommen, in der maximale Stabilität zählt, verfügt das Benbo Trekker Mk3 über einen …Run Code Online (Sandbox Code Playgroud)