SimpleXML节点选择
问题描述:
我想在PHP中使用SimpleXML在XML中选择一行。我有脚本代码加载在XML看起来像这样。SimpleXML节点选择
<Row>
<Cell name="ID">S061102000000000000000006492017092915:13</Cell>
</Row>
我有我的代码来选择名称,但希望它选择该名称的值。目前我在PHP线看起来像这样
<?php
$xml=simplexml_load_file("test.xml") or die("Error: Cannot create
object");
echo "'".$xml->book[0]->title['name'] . "',<br>";
?>
所以这显然输出文本
ID
但是我希望此行的值。只要你也知道有,我想从诸如
<Cell name="Name">First Name</Cell>
答
使用你的XML格式,代码应该是这个样子
$xml = '<Row>
<Cell name="ID">S061102000000000000000006492017092915:13</Cell>
</Row>';
$data = new SimpleXMLElement($xml);
echo "Name:" . $data->Cell["name"] . "\n";
echo "Value:" . (string)$data->Cell . "\n";
,或者如果你有超过
$xml = '<Row>
<Cell name="ID">S061102000000000000000006492017092915:13</Cell>
<Cell name="Name">Value</Cell>
</Row>';
$data = new SimpleXMLElement($xml);
foreach ($data as $cell) {
echo "Name:" . $cell["name"] . "\n";
echo "Value:" . (string)$cell . "\n";
}
答
内容为什么你得到属性name
,如果你想获得标签的身体更细胞名称值?
而不是
$xml->book[0]->title['name']
您应该使用
$xml->book[0]->title
你的情况应该是
$xml->Row[0]->Cell
您可以了解更多关于歌厅节点/属性值here。
'echo'ing强制转换成字符串数据处理多个单元格标记,循环隐含地如此,演员操作是没有必要的。 – ishegg
回声只是一个例子 - 通常你会在其他地方使用该值 - 即对于substr或某种东西。如果在这种情况下忘记了强制转换,则会出现一些对象到字符串转换的错误/警告。所以我暗中写道 – Philipp