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"; 
} 
+1

'echo'ing强制转换成字符串数据处理多个单元格标记,循环隐含地如此,演员操作是没有必要的。 – ishegg

+2

回声只是一个例子 - 通常你会在其他地方使用该值 - 即对于substr或某种东西。如果在这种情况下忘记了强制转换,则会出现一些对象到字符串转换的错误/警告。所以我暗中写道 – Philipp

内容为什么你得到属性name,如果你想获得标签的身体更细胞名称值?

而不是

$xml->book[0]->title['name'] 

您应该使用

$xml->book[0]->title 

你的情况应该是

$xml->Row[0]->Cell 

您可以了解更多关于歌厅节点/属性值here