我一直在疯狂使用SimpleXML试图将值变为可用的PHP变量,这让我感到疯狂。
我真诚地希望你们中的一些更有才华的编码员可以帮助我... 我会尽我所能......
我正在使用Open Patent Service API。使用以下URL,我可以轻松生成带有我需要的所有数据的格式化XML文件。
<?php
// Patent Reference Number
$ref = "EP2359415";
// URL for XML response
$url = "http://ops.epo.org/2.6.2/rest-services/published-data/publication/epodoc/".$ref."/biblio";
// Reading the XML Response
$sitemap = new SimpleXMLElement($url);
// Echo out values from the XML Data
foreach($needhelp as $here) {
echo "Need Help Here!";
// Will be taking data and placing into a database here...
} ?>
如果您看到网址... http://ops.epo.org/2.6.2/rest-services/published-data/publication/epodoc/EP2359415/biblio
您将看到XML返回的复杂程度。 基本上我不能通过php循环从数据中获取任何值......
任何帮助将不胜感激...... 迪安
答案 0 :(得分:2)
我知道这是一个老问题,但我永远无法让SimpleXML做任何事情。鉴于这是谷歌搜索中唯一一个关于在PHP中使用欧洲专利OFfice API的内容,我想我会记录对我有用的内容......
以下是我如何解决它:
# build query url
$patent_url = 'http://ops.epo.org/3.0/rest-services/published-data/search/full-cycle/?q='.urlencode($your_query);
# grab the contents of $patent_url
$patent_raw = file_get_contents($patent_url);
# create an XML parser
$resource = xml_parser_create();
# parse XML into array
xml_parse_into_struct($resource, $patent_raw, $patent_array);
# close the parser - you want to do this...
xml_parser_free($resource);
现在你有一个可以迭代的标准PHP数组($patent_array
)。请注意,这与我的代码类似,但不完全相同 - 如果你剪切/粘贴,你可能需要调整它...当然,你仍然需要弄清楚如何处理由委员会设计的荒谬复杂数据结构,但至少它是可以用的形式。
编辑:
在尝试获得更复杂的结果时,很明显EPO数据不是严格的XML。 SimpleXML&amp;上述代码在尝试解析结果时都不执行任何操作。解决方案是使用容错的DOM XML解析器。我使用的代码在这里描述:http://set.cooki.me/archives/225/php-dom-xml-to-array
答案 1 :(得分:0)
$xml = simplexml_load_file($url);
$xml->registerXPathNamespace('os', $url);
foreach ($xml->children() as $child)
{
// your insertion into database
}