php - 如何使用 CURL 和 DOM 将 xml 文件中的所有元素放入数组中?
问题描述
我需要一些代码方面的帮助。我想使用 CURL 和 DOM 将 xml 文件中的所有元素放入数组中。
你能帮我解决这个问题吗?
我的带有 CURL 代码的 PHP 如下所示:
<?php
$key = 'ad12rqwagst3ewtgsdhdsdsfsdgsd';
$url = 'http://api.11street.my/rest/cateservice/category';
$request_body = 'xml data';
$headers = array(
'openapikey: ' . $key,
'Accept-Charset: utf-8',
'Content-Type: application/xml'
);
$curl = curl_init($url);
curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, TRUE);
$result = curl_exec($curl);
$arrXml = array();
$dom = new DOMDocument;
$dom->loadXML($result);
foreach ($dom->getElementsByTagName('dispEngNm') as $item) {
$arrXml[] = $dom->saveXML($item) . "<br>" . "<hr>";
}
print_r($arrXml);
?>
xml文件的示例代码如下所示,这是我拥有的三个项目:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
</ns2:categorys>
<ns2:category>
<depth>1</depth>
<dispEngNm>Women Clothing</dispEngNm>
<dispNm>Women Clothing</dispNm>
<dispNo>2021</dispNo>
<parentDispNo>0</parentDispNo>
</ns2:category>
<ns2:category>
<depth>2</depth>
<dispEngNm>Women Tops</dispEngNm>
<dispNm>Women Tops</dispNm>
<dispNo>2051</dispNo>
<parentDispNo>2021</parentDispNo>
</ns2:category>
<ns2:category>
<depth>3</depth>
<dispEngNm>Tanks & Camisoles</dispEngNm>
<dispNm>Tanks & Camisoles</dispNm>
<dispNo>2209</dispNo>
<parentDispNo>2051</parentDispNo>
</ns2:category>
</ns2:categorys>
输出如下所示:
Array ( [0] => Women Clothing
[1] => Women Tops
[2] => Tanks & Camisoles
[3] => T-shirts
我只是可以将元素“dispEngNm”放入数组中。任何人都知道如何将其他元素“dispNm”、“dispNo”、“parentDispNo”与“dispEngNm”一起放入数组中?
感谢您的帮助!祝您有一个愉快的一天!
解决方案
只需更改此代码:
foreach ($dom->getElementsByTagName('dispEngNm') as $item) {
$arrXml[] = $dom->saveXML($item) . "<br>" . "<hr>";
}
通过此代码:
$allTags = $dom->getElementsByTagName('ns2:category');
for ($i =0; $i < $allTags.length; $i++) {
$childLen = $allTags[i].childNodes.length;
$innerChilds = $allTags[i].firstChild;
for ($j = 0; $j < $childLen; $j++) {
$arrXml[] = $dom->saveXML($innerChilds.innerHTML) . "<br>" . "<hr>";
$innerChilds = $innerChilds.nextSibling;
}
}
在上面的代码中,我只是加载了所有ns2:category
可能工作的子节点。
注意:我没有测试过代码。您可以对此进行测试并根据需要进行更改。
推荐阅读
- angular - 如何在ionic3中调用函数内部的函数?
- jersey-2.0 - 授权在招摇球衣中不起作用?
- android - 由于线程“main” java.util.zip.ZipException 中的异常,无法运行 react-native 应用程序:打开 zip 文件时出错
- mongodb - expressjs 不允许变量保留范围,即使它们不是本地的
- hibernate - JPA/Hibernate:在不存在的序列/关系上选择 currval
- ruby-on-rails - 如何在 rails api 中使用 devise-jwt 和 devise 进行登录、注册和注销
- crystal-reports-2010 - 如何避免水晶报表中的下一个整数?
- python - 如何在 Django 项目中启动 celery worker
- java - 从另一个类调用函数?
- swift - 键盘未关闭