SimpleXML节点选择

时间:2017-10-09 11:51:43

标签: php simplexml

我正在尝试使用PHP中的SimpleXML在XML中选择一行。我已经在XML中编写了代码加载,如下所示。

# IPv6 local connections:
host    all         all         ::1/128               trust

我有我的代码来选择名称但是希望它选择该名称的值。目前我在PHP中的行看起来像这样

    <Row>
        <Cell name="ID">S061102000000000000000006492017092915:13</Cell>
    </Row>

所以这显然会输出文本

  

ID

但是我想要这一行的值。只是因为你也知道我想从中获取更多的Cell Name值,例如

    <?php
       $xml=simplexml_load_file("test.xml") or die("Error: Cannot create 
       object");

       echo "'".$xml->book[0]->title['name'] . "',<br>";
     ?>

2 个答案:

答案 0 :(得分:0)

如果你想获得标签的正文,为什么会得到属性name

而不是

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

你应该使用

$xml->book[0]->title

在你的情况下它应该是

$xml->Row[0]->Cell 

您可以详细了解如何设置节点/属性值here

答案 1 :(得分:0)

使用您的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";
}