simplexml 相关问题

主源代码树附带的PHP扩展。 SimpleXML扩展提供了一个非常简单且易于使用的工具集,用于将XML转换为可以使用普通属性选择器和数组迭代器处理的对象。对于Java“Simple”XML框架,请使用[simple-framework]标签。

curl 504 网关超时?

我获取 xml 提要,并且想要获取从 2000 年至今所有联赛的所有足球比赛,但我收到 504 网关错误。 Feed 确实很大,如果我从 2014 年到现在尝试一下,它会起作用。但如果我...

回答 1 投票 0

用PHP解析XML,根据特定属性值打印标签值数组

我有一个类似这样的 XML 文件 <

回答 1 投票 0

为什么 SimpleXML 对象的计算结果为布尔值 TRUE?

我是 PHP 和 SimpleXMl 的新手。 我不希望在这些测试中出现错误。 $xml=new SimpleXMLElement('123'); var_dump($xml); 回显 $xml...

回答 3 投票 0

如何将字符串从 php 变量传递到 xml 请求?

我的问题可能写得很愚蠢,但我已经尽力了,我提前道歉) 我有一个 XML 文件。 我需要运行这样的查询: $xml->商店->优惠->优惠 问题...

回答 2 投票 0

使用 SimpleXML 通过命名空间解析 XML [重复]

我将其作为xml: 我将此作为 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> 如何循环遍历所有 event:event 节点并显示,例如,所有 event: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')); } 它确实可以在没有 registerXPathNamespace 和 xpath 查询中的完整名称空间前缀的情况下工作: $xml = new SimpleXMLElement($r); foreach($xml->xpath('//event:event') as $event) { var_export($event->xpath('event:sessionKey')); } 您必须为您使用的每个 simpleXMLElement 对象注册名称空间。 $xml = new SimpleXMLElement($r); $xml->registerXPathNamespace('e', 'http://www.webex.com/schemas/2002/06/service/event'); foreach($xml->xpath('//e:event') as $event) { $event->registerXPathNamespace('e', 'http://www.webex.com/schemas/2002/06/service/event'); var_export($event->xpath('//e:sessionKey')); } 命名空间也应该在 xml 文件中的某个位置声明。 <event:event xmlns:event="http://www.webex.com/schemas/2002/06/service/event"> ... 所描述的方法 axe 也有效。如果您知道 xml 文件将始终使用相同的前缀,则可以跳过 registerXPathNamespace。 这是对我有用的替代方案。 $xml = simplexml_load_string($r); $ns = $xml->getNamespaces(true); foreach ($xml->children($ns['event'])->event as $skey) { $sessionKey = $skey->children($ns['event'])->sessionKey; echo $sessionKey; } 我在 simplexml 上做了很多工作,这就是我的做法。 如果您已经有一个元素并且只想获取其不同的命名空间子元素,那么魔术技巧如下: <entry> <title type="text">My test entry</title> <gd:when startTime="2017-02-26T02:00:00Z" endTime="2017-02-26T03:00:00Z"/> <gc:notes type="string">A type</gc:notes> </entry> 就是将TRUE作为第二个参数发送给children函数: $title = (string) $entry->title; $gd = $entry->children('gd', TRUE); $attrs = $gd->when->attributes(); $startTime = (string) $attrs->startTime; $gc = $entry->children('gc', TRUE); $notes = (string) $gc->notes(); 另一种方法是使用 SimpleXML 进行解析,使用 DOMDocument 进行操作/访问,这完全绕过了命名空间问题: $xml = new SimpleXMLElement($r); $xml = dom_import_simplexml($xml); $nodelist= $xml->getElementsByTagName('event'); for($i = 0; $i < $nodelist->length; $i++) { $sessions = $nodelist->item($i)->getElementsByTagName('sessionKey'); echo $sessions->item(0)->nodeValue; } 使用registerXPathNamespace然后调用xpath实际上对我不起作用。 我必须采用这篇精彩文章中提供的解决方案:http://blog.preinheimer.com/index.php?/archives/172-SimpleXML,-Namespaces-Hair-loss.html 所以在你的情况下,这个: echo $xml->children('http://www.webex.com/schemas/2002/06/service/event')->sessionName; 将输出: 几分钟内学会QB

回答 6 投票 0

php simplexml,xml 元素中带有点字符

使用下面的xml格式,我们如何在php中从XMLReader访问News.Env元素? $xmlobj->News->News.Env 给出的 Env 不正确。 使用以下 xml 格式,我们如何从 php 中的 XMLReader 访问 News.Env 元素? $xmlobj->News->News.Env 给出的 Env 是不正确的。 <?xml version="1.0" encoding="utf-8"?> <News> <News.Env>abc</News.Env> </News> 这是因为点.是php中的字符串连接符。在您的情况下,它尝试将 $xmlobj->News->News (不存在,因此为空)与常量 Env (也不存在,被视为字符串。您会收到关于此的通知适当的错误级别) $tmp = 'News.Env'; $xmlobj->News->$tmp; 或者简而言之 $xmlobj->News->{'News.Env'}; 更新:如果您使用 SimpleXML(并且根据您执行的语法),它 $xmlobj 以 News-(root-)Element“开始”。 $xmlobj->{'News.Env'}; 尝试类似的事情 $string = <<<XML <?xml version="1.0" encoding="utf-8"?> <News> <News.Env>abc</News.Env> </News> XML; $xml = simplexml_load_string($string); print_r($xml->{'News.Env'});

回答 2 投票 0

如何使用SimpleXml获取元素的innerText

我对 SimpleXml 还很陌生。我正在尝试做的事情: 我有很多 xml 文件,它们的构建方式大致相同。我的问题是有时我的目标节点中有更多节点。示例(尝试...

回答 3 投票 0

PHP 解析 XML 以获取多个深度的所有字符串值我<underline><bold>爱</bold></underline>编码

我有一个类似于以下示例的 XML: 我<underline><bold>爱</bold></underline>编码 &... 我有一个类似于以下示例的 XML: <article> <body> <title>I <underline><bold>LOVE</bold></underline> Coding</title> </body> </article> 我想获取节点title的全文。 $xml=simplexml_load_file("file.xml"); $title=$xml->xpath('//title')??[]; echo (string)$title; 我似乎无法更深入地了解带下划线/粗体的 XML 部分。 我希望结果是一个字符串I LOVE Coding。 我怎样才能实现这个目标?我只得到I Coding。 我也尝试过xpath('string(//title)')但得到了空结果。 您需要剥离<title>内部的标签,如下所示: $xmlFile = simplexml_load_file('file.xml'); $title = strip_tags($xmlFile->body->title->asXML()); echo $title; 或者如果您的 XML 不是文件而是字符串: $xmlString = '<article> <body> <title>I <underline><bold>LOVE</bold></underline> Coding</title> </body> </article>'; $xml = simplexml_load_string($xmlString); $title = strip_tags($xml->body->title->asXML()); echo $title; 您可以拨打dom_import_simplexml() 检索 DOM 元素,然后使用 textContent 属性: $xml = <<<XML <article> <body> <title>I <underline><bold>LOVE</bold></underline> Coding</title> </body> </article> XML; $doc = simplexml_load_string($xml); $title = $doc->xpath('//title')[0]; $dom = dom_import_simplexml($title); echo $dom->textContent; 结果: I LOVE Coding

回答 2 投票 0

php simplexml 获取具有特定标签的所有元素MI High:系列 7:绘制明天的人

(...) 标签:bbc.co.uk,2008:iplayer:concept_pid:b03tcb0b MI High:系列 7:绘制明天的人 ...

回答 2 投票 0

PHP 解析来自 CDN Flush API 的 XML / 字符串响应

我正在向 CDN API 发出请求,该请求会刷新特定项目的缓存。我试图正确解析响应,但响应不仅返回错误(从我的角度来看)...

回答 2 投票 0

PHP 中的 WEBDAV xml 到 object/json?

我从 OwnCloud 获得了 webdav PROPFIND xml 响应。我需要转换为 PHP 对象(最终是 json)。问题是响应中充满了命名空间,这是 php 的

回答 1 投票 0

如何在 matlab 上像手动求解一样求解 4 变量单纯形法问题?代码不能全自动化,不能用linprog

我要在不使用linprog的情况下在matlab上解决一个4变量单纯形法问题,我需要像在纸上写一样解决它。代码不应该像正常情况下那样完全自动化......

回答 0 投票 0

获取 soapenv 响应并将其解析为 php 对象,然后从对象访问所有和每个数据

使用 soapUI 我从 wsdl url 得到响应,我得到 soap 响应一切正常,现在我需要使用网站上的数据所以我可以将用户输入的数据与我得到的响应进行比较,我...

回答 0 投票 0

PHP访问simplexml_load_file创建的多维数组对象返回null?

我有一个使用 PHP simplexml_load_file 函数创建的 RSS 对象 $rssObject,目标是获取 [href] 的值。 var_dump($rssObject) 返回以下内容: 大批 ( [0] =>

回答 1 投票 0

在 Android 上使用简单与和改造反序列化字符串元素列表

我正在使用 simple-xml 库 (https://simple.sourceforge.net/home.php) 反序列化字符串元素列表。 图片/png ...

回答 1 投票 0

检测 simpleXml 数组属性

我想我在这里遗漏了一些非常明显的东西,但是有人可以向我解释为什么我得到的是我的输出,而不是我在以下 var 转储中期望的输出: 这是原始的 xml: <

回答 3 投票 0

SimpleXML 删除节点

我有一个只运行一次的 foreach 循环,这让我很困惑。 1:我加载一组状态值(“请求”、“删除”或“已购买”) 2:然后我喜欢...

回答 2 投票 0

在 XML 中下载具有相同名称的图像

我正在尝试下载产品图片或获取 XML 格式的文件路径。我有同名的麻烦。谢谢。 文件 - - AXX-655 我正在尝试下载产品图片或获取 XML 格式的文件路径。我有同名的麻烦。谢谢。 XML 文件 -<products> -<product> <product_code>AXX-655</product_code> <product_name>Samsung Led TV</product_name> -<Images> <Image>https://max.cloud/37233/products-77d4.jpg</Image> <Image>https://max.cloud/37233/products-254789.jpg</Image> <Image>https://max.cloud/37233/products-f010.jpg</Image> <Image>https://max.cloud/37233/products-8004.jpg</Image> </Images> -</product> -<product> <product_code>ACH-645</product_code> <product_name>LG Led TV</product_name> -<Images> <Image>https://max.cloud/37233/products-895777.jpg</Image> <Image>https://max.cloud/37233/products-3652.jpg</Image> <Image>https://max.cloud/37233/products-k0120.jpg</Image> </Images> -</product> -</products> 我正在尝试通过产品 ID 或产品名称下载产品图片 PHP文件 $xml = simplexml_load_file($xmllocalurl) or die("Error: Cannot create object"); foreach ($xml->children() ->children() as $child) { $name = $child->product_name; $url = $child->Images->Image; $img = 'imgfiles/'.$name.'.jpg'; $url = $child->product_name; file_put_contents($img, file_get_contents($url)); 由于您正在处理 xml,您最好使用 xpath 来提取我认为是您的目标数据的内容。 以下只是展示数据;然后你可以按照你认为合适的方式保存它: $items = $xml->xpath('//product'); foreach ($items as $item) { $name = $item->xpath('./product_name')[0]; $code = $item->xpath('./product_code')[0]; $images = $item->xpath('.//Image/text()'); echo $name," " ,$code," " ; foreach ($images as $image) { echo $image , " "; } echo "\r\n"; }; 输出(基于您的示例 xml): Samsung Led TV AXX-655 https://max.cloud/37233/products-77d4.jpg https://max.cloud/37233/products-254789.jpg https://max.cloud/37233/products-f010.jpg https://max.cloud/37233/products-8004.jpg LG Led TV ACH-645 https://max.cloud/37233/products-895777.jpg https://max.cloud/37233/products-3652.jpg https://max.cloud/37233/products-k0120.jpg

回答 1 投票 0

列出SimpleXml对象

我想用php SimpleXml列出一个XML文件。 通过

回答 1 投票 0

更改子节点的命名空间 SimpleXMLElement

我想知道如何才能做到以下几点?子女的命名空间被改变......

回答 1 投票 0

© www.soinside.com 2019 - 2024. All rights reserved.