帮助!通过 php simplexml 获取节点值!

发布于 2024-10-03 16:15:57 字数 1460 浏览 3 评论 0原文

我只想从 xml 节点获取值。所以我遵循 php 文档中的代码: SimpleXMLElement::xpath() 。但是没有。而且我觉得Xpath更不方便,有没有更好的方法来获取我想要的节点??!

我的php代码:

<?php

/**
 * @author kevien
 * @copyright 2010
 */

$arr = array ();

$xml = simplexml_load_file("users.xml");

$result = $xml->xpath('/users/user[@id="126"]/watchHistory/whMonthRecords[@month="2010-09"]/whDateList/date');

while(list( , $node) = each($result)) {

    array_push($arr, $node);
}

print_r($arr);
?>

它返回:

Array ( [0] => SimpleXMLElement Object ( [0] => 02 ) [1] => SimpleXMLElement Object ( [0] => 03 ) [2] => SimpleXMLElement Object ( [0] => 06 ) [3] => SimpleXMLElement Object ( [0] => 10 ) [4] => SimpleXMLElement Object ( [0] => 21 ) ) 

我的users.xml部分:

<users>
    <user id="126">
        <name>老黄牛三</name>
        <watchHistory>
            <whMonthRecords month="2010-09">
                <whDateList month="2010-09">
                    <date>02</date>
                    <date>03</date>
                    <date>06</date>
                    <date>10</date>
                    <date>21</date>
                </whDateList>
                      </<whMonthRecords>
               </<watchHistory>>
      </user>
  </users>

非常感谢!

I just want to get the value from xml node.So I following the code from php document:
SimpleXMLElement::xpath() .But it didn't.And I thought the Xpath is much more inconvenience ,is there a much better way to get the node I want??!

my php code:

<?php

/**
 * @author kevien
 * @copyright 2010
 */

$arr = array ();

$xml = simplexml_load_file("users.xml");

$result = $xml->xpath('/users/user[@id="126"]/watchHistory/whMonthRecords[@month="2010-09"]/whDateList/date');

while(list( , $node) = each($result)) {

    array_push($arr, $node);
}

print_r($arr);
?>

it returns:

Array ( [0] => SimpleXMLElement Object ( [0] => 02 ) [1] => SimpleXMLElement Object ( [0] => 03 ) [2] => SimpleXMLElement Object ( [0] => 06 ) [3] => SimpleXMLElement Object ( [0] => 10 ) [4] => SimpleXMLElement Object ( [0] => 21 ) ) 

my part of users.xml :

<users>
    <user id="126">
        <name>老黄牛三</name>
        <watchHistory>
            <whMonthRecords month="2010-09">
                <whDateList month="2010-09">
                    <date>02</date>
                    <date>03</date>
                    <date>06</date>
                    <date>10</date>
                    <date>21</date>
                </whDateList>
                      </<whMonthRecords>
               </<watchHistory>>
      </user>
  </users>

Thank you very much!!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

不一样的天空 2024-10-10 16:15:57

将整个循环替换为:

foreach ($result as $node) {
    $arr[] = (string)$node;
}

甚至:

$result = array_map('strval', $result);

Replace your whole loop with:

foreach ($result as $node) {
    $arr[] = (string)$node;
}

or even:

$result = array_map('strval', $result);
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文