www.91084.com

GVKun编程网logo

PHP从SimpleXMLElement数组中获取值(php获取数组元素)

35

想了解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从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 />";
  }

解决方法

使用SimpleXML,您可以获得:

>子元素,使用对象表示法:$element-> subElement
>和属性,使用数组表示法:$element [‘attribute’]

所以,在这里,我要说你必须使用:

echo $child['name'];

作为参考,有关几个示例,请参阅simplexml手册的Basic usage部分.

示例#6应该是有趣的,关于属性.

PHP object(SimpleXMLElement) 对象转换为数组

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

php simpleXMLElement to array:null value

我有以下 XML:
<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 函数

PHP SimpleXMLElement::__toString SimpleXML 函数

定义和用法

SimpleXMLElement::__toString - 返回字符串内容

版本支持

PHP4 PHP5 PHP7
不支持 支持 支持

语法

SimpleXMLElement::__toString ( void )

返回直接在此元素中的文本内容。 不返回该元素的子元素内的文本内容。

返回值

成功时返回 TRUE, 或者在失败时返回 FALSE。

示例

$xml = new SimpleXMLElement(''<a>1 <b>2 </b>3</a>'');
echo $xml;  // 隐式的调用了toString方法

相关函数

SimpleXMLElement::asXML() - 返回基于SimpleXML元素的格式正确的XML字符串

  

PHP SimpleXMLElement:XML文件解析和读写

PHP SimpleXMLElement:XML文件解析和读写

php保存xml文件

<span>$xml</span><span>=</span><span>new</span> SimpleXMLElement(<span>XML</span>数据);
        <span>$xml</span><span>-&gt;</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>-&gt;asXML(<span>$this</span>-&gt;filename);
    }
    <span>//读取文件</span><span>private</span><span><span>function</span><span>readFile</span><span>()</span>
    {</span><span>if</span>(!<span>$this</span>-&gt;isreading)
        {
            <span>$this</span>-&gt;rxml= simplexml_load_file(<span>$this</span>-&gt;filename);
            <span>$this</span>-&gt;isreading=<span>true</span>;
        }
    }
    <span>//测试:遍历某一数组</span><span>public</span><span><span>function</span><span>readdata</span><span>()</span>
    {</span><span>$this</span>-&gt;readFile();
        <span>foreach</span> (<span>$this</span>-&gt;rxml-&gt;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>-&gt;readFile();
        <span>echo</span><span>"读取第[1]个data数据:"</span>;
        <span>echo</span><span>$this</span>-&gt;rxml-&gt;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>-&gt;readFile();
        <span>echo</span><span>"读取from节点:"</span>;
        <span>echo</span><span>$this</span>-&gt;rxml-&gt;from-&gt;name .<span>'',''</span>;
        <span>echo</span><span>$this</span>-&gt;rxml-&gt;from-&gt;arg.<span>"<br>"</span>;
                <span>//读取name节点的fristname属性</span><span>echo</span><span>$this</span>-&gt;rxml-&gt;from-&gt;name[<span>''fristname''</span>].<span>"<br>"</span>;
    }
}


<span>$tmp</span> = <span>new</span> XmlTest();
<span>$tmp</span>-&gt;writeTest();
<span>$tmp</span>-&gt;readdata();
<span>$tmp</span>-&gt;readdata1();
<span>$tmp</span>-&gt;readfrom();

<span>?&gt;</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>-&gt;readFile();
        <span>$data</span>= <span>$this</span>-&gt;rxml-&gt;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>-&gt;readFile();
        <span>$data1</span> =  <span>$this</span>-&gt;rxml-&gt;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>-&gt;readFile();
        <span>$name</span>= <span>$this</span>-&gt;rxml-&gt;xpath(<span>''/root/from/name''</span>);
        <span>$arg</span>= <span>$this</span>-&gt;rxml-&gt;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-&gt;readdata_xpath();
$tmp-&gt;readdata1_xpath();
$tmp-&gt;readfrom_xpath();

<span>*****</span><span>*****</span><span>*****</span><span>***</span>
浏览器打印:
[<span>A</span>][<span>B</span>][<span>C</span>] 
读取第[1]个data数据:B 
读取from数据:老四,30 
陈
登录后复制
'').addClass(''pre-numbering'').hide(); $(this).addClass(''has-numbering'').parent().append($numbering); for (i = 1; i '').text(i)); }; $numbering.fadeIn(1700); }); });

以上就介绍了 PHP SimpleXMLElement:XML文件解析和读写,包括了方面的内容,希望对PHP教程有兴趣的朋友有所帮助。

关于PHP从SimpleXMLElement数组中获取值php获取数组元素的介绍已经告一段落,感谢您的耐心阅读,如果想了解更多关于PHP object(SimpleXMLElement) 对象转换为数组、php simpleXMLElement to array:null value、PHP SimpleXMLElement::__toString SimpleXML 函数、PHP SimpleXMLElement:XML文件解析和读写的相关信息,请在本站寻找。

本文标签: