想了解PHP从SimpleXMLElement数组中获取值的新动态吗?本文将为您提供详细的信息,我们还将为您解答关于php获取数组元素的相关问题,此外,我们还将为您介绍关于PHPobject(Simp
想了解PHP从SimpleXMLElement数组中获取值的新动态吗?本文将为您提供详细的信息,我们还将为您解答关于php获取数组元素的相关问题,此外,我们还将为您介绍关于PHP object(SimpleXMLElement) 对象转换为数组、php simpleXMLElement to array:null value、PHP SimpleXMLElement::__toString SimpleXML 函数、PHP SimpleXMLElement:XML文件解析和读写的新知识。
本文目录一览:- PHP从SimpleXMLElement数组中获取值(php获取数组元素)
- PHP object(SimpleXMLElement) 对象转换为数组
- php simpleXMLElement to array:null value
- PHP SimpleXMLElement::__toString SimpleXML 函数
- PHP SimpleXMLElement:XML文件解析和读写
PHP从SimpleXMLElement数组中获取值(php获取数组元素)
[1]=> object(SimpleXMLElement)#6 (1) { ["@attributes"]=> array(14) { ["name"]=> string(5) "MysqL" ["ackNowledged"]=> string(1) "1" ["comments"]=> string(1) "1" ["current_check_attempt"]=> string(1) "1" ["downtime"]=> string(1) "0" ["last_check"]=> string(19) "2010-05-01 17:57:00" ["markdown_filter"]=> string(1) "0" ["max_check_attempts"]=> string(1) "3" ["output"]=> string(42) "CRITICAL - Socket timeout after 10 seconds" ["perfdata_available"]=> string(1) "1" ["service_object_id"]=> string(3) "580" ["state"]=> string(8) "critical" ["state_duration"]=> string(6) "759439" ["unhandled"]=> string(1) "0" } }
(我使用var_dump($child)来生成)
如何从字符串中获取’name’属性?
这是我的代码:
$xml = simplexml_load_string($results); foreach($xml->data->list as $child) { var_dump($child); echo $child->getName() . ": " . $child->name . "<br />"; }
解决方法
>子元素,使用对象表示法:$element-> subElement
>和属性,使用数组表示法:$element [‘attribute’]
所以,在这里,我要说你必须使用:
echo $child['name'];
作为参考,有关几个示例,请参阅simplexml手册的Basic usage部分.
示例#6应该是有趣的,关于属性.
PHP object(SimpleXMLElement) 对象转换为数组
跳至 [1] [2] [全屏预览]object(SimpleXMLElement)[9] public ''result'' => object(SimpleXMLElement)[8] public ''err_code'' => string ''0'' (length=1) public ''model'' => string ''000000000000^000000000000'' (length=26) public ''success'' => string ''true'' (length=4) public ''request_id'' => string ''000000000000'' (length=13)
php simpleXMLElement to array:null value
<account> <id>123</id> <email></email> <status>ACTIVE</status> </account>
我想把它作为一个数组变量.因此我用$xml = simplexml_load_file()读取它.将simpleXMLElement转换为关联数组的最简单方法是使用:json_decode(json_encode((array)$xml),1);
问题是我不想将电子邮件密钥作为空数组,而是作为NULL值.作为SimpleXMLElement,它看起来像:
public 'email' => object(SimpleXMLElement)[205]
而在数组中它看起来像:
'email' => array (size=0) empty
我想得到:
'email' => NULL
实现这一点的唯一方法我想到的是遍历所有元素并用空值替换空数组.问题是我的XML更大(上面只是解释问题)而且我必须迭代很多XML元素(这将是手工工作 – 我正在寻找一些自动化的东西).也许我错过了其中一个功能中的一些选项…或者可能还有另一个技巧可以做到这一点?
//after you json_encode,before you decode $str = str_replace(':[]',':null',json_encode($array));
JSON中的空数组由“[]”表示.有时,数组被解析为对象,在这种情况下(或作为后备),您也可以替换“:{}”.
PHP SimpleXMLElement::__toString SimpleXML 函数
定义和用法
版本支持
PHP4 | PHP5 | PHP7 |
---|---|---|
不支持 | 支持 | 支持 |
语法
SimpleXMLElement::__toString ( void )
返回直接在此元素中的文本内容。 不返回该元素的子元素内的文本内容。
返回值
示例
$xml = new SimpleXMLElement(''<a>1 <b>2 </b>3</a>'');
echo $xml; // 隐式的调用了toString方法
相关函数
PHP SimpleXMLElement:XML文件解析和读写
php保存xml文件
<span>$xml</span><span>=</span><span>new</span> SimpleXMLElement(<span>XML</span>数据); <span>$xml</span><span>-></span>asXML(文件名);
PHP读取XML文件
<span>XXX</span>=<span> simplexml_load_file(文件名);</span>
1.使用面向对象方式访问XML
<span><?php </span><span><span>class</span><span>XmlTest</span> {</span><span>private</span><span>$filename</span> = <span>"a.xml"</span>; <span>private</span><span>$isreading</span>=<span>false</span>; <span>private</span><span>$rxml</span>; <span>//创建XML文件</span><span>public</span><span><span>function</span><span>writeTest</span><span>()</span> {</span><span>$_data</span> = <span> <root><data>A</data><data>B</data><data>C</data><from><name fristname="陈">老四</name><arg>30</arg></from><heading>Reminder</heading>Don''t forget the meeting! </root> data;</span><span>$xml</span> = <span>new</span> SimpleXMLElement(<span>$_data</span>); <span>$xml</span>->asXML(<span>$this</span>->filename); } <span>//读取文件</span><span>private</span><span><span>function</span><span>readFile</span><span>()</span> {</span><span>if</span>(!<span>$this</span>->isreading) { <span>$this</span>->rxml= simplexml_load_file(<span>$this</span>->filename); <span>$this</span>->isreading=<span>true</span>; } } <span>//测试:遍历某一数组</span><span>public</span><span><span>function</span><span>readdata</span><span>()</span> {</span><span>$this</span>->readFile(); <span>foreach</span> (<span>$this</span>->rxml->data <span>as</span><span>$x</span>) { <span>echo</span><span>"["</span>.<span>$x</span>.<span>"]"</span>; } <span>echo</span><span>"<br>"</span>; } <span>//测试 用数组下标读取数组某一项</span><span>public</span><span><span>function</span><span>readdata1</span><span>()</span> {</span><span>$this</span>->readFile(); <span>echo</span><span>"读取第[1]个data数据:"</span>; <span>echo</span><span>$this</span>->rxml->data[<span>1</span>] .<span>"<br>"</span>; } <span>//测试:读取2级XML节点</span><span>public</span><span><span>function</span><span>readfrom</span><span>()</span> {</span><span>$this</span>->readFile(); <span>echo</span><span>"读取from节点:"</span>; <span>echo</span><span>$this</span>->rxml->from->name .<span>'',''</span>; <span>echo</span><span>$this</span>->rxml->from->arg.<span>"<br>"</span>; <span>//读取name节点的fristname属性</span><span>echo</span><span>$this</span>->rxml->from->name[<span>''fristname''</span>].<span>"<br>"</span>; } } <span>$tmp</span> = <span>new</span> XmlTest(); <span>$tmp</span>->writeTest(); <span>$tmp</span>->readdata(); <span>$tmp</span>->readdata1(); <span>$tmp</span>->readfrom(); <span>?></span></span>
浏览器打印:
立即学习“PHP免费学习笔记(深入)”;
点击下载“修复打印机驱动工具”;
[<span>A</span>][<span>B</span>][<span>C</span>] 读取第[1]个data数据:B 读取from数据:老四,30 陈
2.使用xpath访问XML., 用路径获取节点,区别:获取的节点都以数组返回,因此用数组下标访问
<span>public</span><span><span>function</span><span>readdata_xpath</span><span>()</span> {</span><span>$this</span>->readFile(); <span>$data</span>= <span>$this</span>->rxml->xpath(<span>''/root/data''</span>); <span>foreach</span> (<span>$data</span><span>as</span><span>$x</span>) { <span>echo</span><span>"["</span>.<span>$x</span>.<span>"]"</span>; } <span>echo</span><span>"<br>"</span>; } <span>public</span><span><span>function</span><span>readdata1_xpath</span><span>()</span> {</span><span>$this</span>->readFile(); <span>$data1</span> = <span>$this</span>->rxml->xpath(<span>''/root/data''</span>); <span>echo</span><span>"读取第[1]个data数据:"</span>; <span>echo</span><span>$data1</span>[<span>1</span>] .<span>"<br>"</span>; } <span>public</span><span><span>function</span><span>readfrom_xpath</span><span>()</span> {</span><span>$this</span>->readFile(); <span>$name</span>= <span>$this</span>->rxml->xpath(<span>''/root/from/name''</span>); <span>$arg</span>= <span>$this</span>->rxml->xpath(<span>''/root/from/arg''</span>); <span>echo</span><span>"读取from数据:"</span>; <span>echo</span><span>$name</span>[<span>0</span>] .<span>'',''</span>; <span>echo</span><span>$arg</span>[<span>0</span>].<span>"<br>"</span>; <span>//读取name节点的fristname属性</span><span>echo</span><span>$name</span>[<span>0</span>][<span>''fristname''</span>].<span>"<br>"</span>; }
$tmp->readdata_xpath(); $tmp->readdata1_xpath(); $tmp->readfrom_xpath(); <span>*****</span><span>*****</span><span>*****</span><span>***</span> 浏览器打印: [<span>A</span>][<span>B</span>][<span>C</span>] 读取第[1]个data数据:B 读取from数据:老四,30 陈
以上就介绍了 PHP SimpleXMLElement:XML文件解析和读写,包括了方面的内容,希望对PHP教程有兴趣的朋友有所帮助。
关于PHP从SimpleXMLElement数组中获取值和php获取数组元素的介绍已经告一段落,感谢您的耐心阅读,如果想了解更多关于PHP object(SimpleXMLElement) 对象转换为数组、php simpleXMLElement to array:null value、PHP SimpleXMLElement::__toString SimpleXML 函数、PHP SimpleXMLElement:XML文件解析和读写的相关信息,请在本站寻找。
本文标签: