Php 在特定属性中查找子级的值 12月19日 桑给巴尔 利物浦 Ticketline.co.uk £6 时间待定 1月16日星期六 凯尔特连接,经典格兰德 格拉斯哥 0141 353 8000 £17.50 晚上7点

Php 在特定属性中查找子级的值 12月19日 桑给巴尔 利物浦 Ticketline.co.uk £6 时间待定 1月16日星期六 凯尔特连接,经典格兰德 格拉斯哥 0141 353 8000 £17.50 晚上7点,php,xml,simplexml,Php,Xml,Simplexml,比如说,如果我想从属性为2的gig元素中查看“date”的值,我如何使用php来实现这一点 基本上,我想删除sayid2,然后再次创建它或只是修改它 使用simpleXML如何删除某个部分 要查找节点,请使用 它将返回一个数组,其中包含所有节点,其属性id的值为2。通常,它将包含0或1个元素。您可以直接修改它们。例如: $data->xpath('//gig[@id="2"]'); $data=simplexml\u load\u字符串( ' 12月19日 桑给巴尔 利物浦 Ticket

比如说,如果我想从属性为2的gig元素中查看“date”的值,我如何使用php来实现这一点

基本上,我想删除sayid2,然后再次创建它或只是修改它

使用simpleXML如何删除某个部分

要查找节点,请使用

它将返回一个数组,其中包含所有
节点,其属性
id
的值为2。通常,它将包含0或1个元素。您可以直接修改它们。例如:

$data->xpath('//gig[@id="2"]');
$data=simplexml\u load\u字符串(
'
12月19日
桑给巴尔
利物浦
Ticketline.co.uk
£6
时间待定
1月16日星期六
凯尔特连接,经典格兰德
格拉斯哥
0141 353 8000
£17.50
晚上7点
'
);
$nodes=$data->xpath('//gig[@id=“2”]');
if(空($nodes))
{
//我没找到
}
$gig=$nodes[0];
$gig->time='6pm';
模具($data->asXML());

删除任意节点要复杂一个数量级,因此修改值要比删除/重新创建节点容易得多。

我一直遇到这个错误,致命错误:在本例第45行的/var/www/sm16832/public_html/cms/index.php中对非对象调用成员函数xpath(),$data是您的SimpleXMLElement对象。为避免混淆,请始终以PHP变量所代表的节点命名。如果根节点是
,那么PHP变量应该是
$data
$data->xpath('//gig[@id="2"]');
$data = simplexml_load_string(
    '<data>
        <gig id="1">
            <date>December 19th</date>
            <venue>The Zanzibar</venue>
            <area>Liverpool</area>
            <telephone>Ticketline.co.uk</telephone>
            <price>£6</price>
            <time>Time TBA</time>
        </gig>
        <gig id="2">
            <date>Sat. 16th Jan</date>
            <venue>Celtic Connection, Classic Grand</venue>
            <area>Glasgow</area>
            <telephone>0141 353 8000</telephone>
            <price>£17.50</price>
            <time>7pm</time>
        </gig>
    </data>'
);

$nodes = $data->xpath('//gig[@id="2"]');

if (empty($nodes))
{
    // didn't find it
}

$gig = $nodes[0];
$gig->time = '6pm';

die($data->asXML());