我有以下XML:
<ns1:getBannerLinksResponse xmlns:ns1="http://endpoint.website.com/">
<ns1:return>
<ns1:campaignID>0</ns1:campaignID>
<ns1:categoryID>200230455</ns1:categoryID>
<ns1:categoryName>Promotion</ns1:categoryName>
<ns1:linkID>10001599</ns1:linkID>
<ns1:linkName>KFL-20% off No Min</ns1:linkName>
<ns1:mid>3071</ns1:mid>
<ns1:nid>1</ns1:nid>
<ns1:clickURL>
http://someurl
</ns1:clickURL>
<ns1:endDate>Oct 15, 2012</ns1:endDate>
<ns1:height>250</ns1:height>
<ns1:iconURL>
http://someurl
</ns1:iconURL>
<ns1:imgURL>
http://someurl
</ns1:imgURL>
<ns1:landURL>
http://someurl
</ns1:landURL>
<ns1:serverType>22</ns1:serverType>
<ns1:showURL>
http://someurl
</ns1:showURL>
<ns1:size>13</ns1:size>
<ns1:startDate>Oct 14, 2012</ns1:startDate>
<ns1:width>300</ns1:width>
</ns1:return>
</ns1:getBannerLinksResponse>
我尝试了以下操作,但没有运气:
$data = new SimpleXMLElement($xml);
$data->registerXPathNamespace('ns1','http://endpoint.website.com/');
foreach($data->xpath('//ns1:return') as $banner)
{
$banner->registerXPathNamespace('ns1','http://endpoint.website.com/');
var_dump($banner);
}
您需要使用->childress()
方法。 如果您避免使用XPath而仅仅使用SimpleXML运算符,那么您的代码将会简单得多。
在使用标准PHP调试函数调试相当神奇的SimpleXML对象时,命名空间元素也是许多不可见的东西之一。 (下面使用[mysimplexml_dump()
函数代替。)
$data = new SimpleXMLElement($xml);
$banner = $data->children('ns1', true)->return;
// Or to avoid relying on the 'ns1' alias: ->children('http://endpoint.website.com/', false);
simplexml_dump($banner);
请注意,在另一个->childress()
调用之前,“NS1”命名空间一直保持选中状态:
// Remember to cast to string if you want the content of an element or attribute
var_dump( (string)$banner->linkName );
如果
可以多次出现,则显然会变成:
foreach ( $data->children('ns1', true)->return as $banner )
{
simplexml_dump($banner);
}
你所需要的就是
$data = new SimpleXMLElement($xml);
$data->registerXPathNamespace('ns1','http://endpoint.websitecom/');
$part = $data->xpath("//ns1:return");
var_dump($part[0]->children("ns1",true));
输出量
object(SimpleXMLElement)[3]
public 'campaignID' => string '0' (length=1)
public 'categoryID' => string '200230455' (length=9)
public 'categoryName' => string 'Promotion' (length=9)
public 'linkID' => string '10001599' (length=8)
public 'linkName' => string 'KFL-20% off No Min' (length=18)
public 'mid' => string '3071' (length=4)
public 'nid' => string '1' (length=1)
public 'clickURL' => string '
http://someurl
' (length=36)
public 'endDate' => string 'Oct 15, 2012' (length=12)
public 'height' => string '250' (length=3)
public 'iconURL' => string '
http://someurl
' (length=36)
public 'imgURL' => string '
http://someurl
' (length=36)
public 'landURL' => string '
http://someurl
' (length=36)
public 'serverType' => string '22' (length=2)
public 'showURL' => string '
http://someurl
' (length=36)
public 'size' => string '13' (length=2)
public 'startDate' => string 'Oct 14, 2012' (length=12)
public 'width' => string '300' (length=3)
问题内容: 我有一个XML文档,内容如下: 我的问题是如何使用Python中的BeautifulSoup这样的库访问它们? xmlDom.web [“ Web”]。总计?不起作用? 问题答案: BeautifulSoup本身不是DOM库(它不实现DOM API)。使事情变得更复杂的是,您在该xml片段中使用了名称空间。要解析该特定的XML片段,可以使用BeautifulSoup,如下所示: 如果您
我需要一个简单的xslt,它接受输入并提供如下所述的输出。我已经编写了xslt,但名称空间被忽略了。你能帮我一下吗。 输入消息: 预期输出消息: 实际输出消息: XSLT:
问题内容: 尽管我已经学习Python大约一年了,但我正在学习Python并仍然是一个初学者。我正在尝试编写一个在主模块中调用的功能模块。被调用模块中的每个函数都需要math模块才能运行。我想知道是否有一种方法可以在不将数学模块导入被调用模块内部的情况下进行操作。这是我所拥有的: : : 运行时,我得到: 我很难理解的是为什么在运行时出现名称错误。我知道该变量在导入时对主模块变为全局,因为可以访问
我收到看起来像这样xml: 我想把它分解成对象。 我创建了以下bean: 解组后,我得到了一个对象,它被成功填充,除了blackListArray字段。该字段包含列表,其中只有一项。并且该项中的所有字段都为空。 似乎JAXB可以找到元素,但错过了其中的所有内部元素。 我使用MOXy作为JAXB实现。 附言 我试着把包裹信息放进去。java与我的bean在文件夹中,如该问题所示 但这对我没有帮助。
描述 (Description) 命名空间用于以通用名称对mixin进行分组。 使用名称空间,可以避免名称冲突,并从外部封装一组mixins。 例子 (Example) 以下示例演示了在LESS文件中使用命名空间和访问器 - <html> <head> <title>Less Namespaces and Accessors</title> <link rel = "
仅当我从 XML 文件内的所有元素中删除“bpmn:”时,此代码才有效,否则它会引发以下异常: javax.xml.bind.UnmarshalException:意外元素(URI:"http://www.omg.org/spec/BPMN/20100524/MODEL",local:"定义") 我试图在不修改XML文件的情况下使其工作。任何帮助将不胜感激。提前致谢 :)
我使用SpringBoot创建了一个SOAP Web服务服务器,并且我能够成功创建一个endpoint。但是,我无法创建多个endpoint并使用不同的URL访问它们。我想通过URL来访问处理该过程。 每个endpoint接收到的SOAP消息具有相同的模式。(命名空间和localpart是相同的!!!)我不想公开WSDL。 例如。 userA向以下URL发送以下SOAP消息:http://soap
我有情况, 有一个sample.xsd(旧版本-没有命名空间)。为同一个XSD文件使用XJC生成JAXB类。我得到了一个使用JAXB类基于XSD解封XML数据文件的示例。sample.xsd文件已更改(新版本-添加的命名空间)。再次为新的XSD文件使用XJC生成JAXB类。该示例已更新,现在可以用于新的XSD文件 现在我有一个情况,我正在获取基于旧XSD的XML数据文件,我想使用更新的示例文件来解