【发布时间】:2014-05-06 06:01:17
【问题描述】:
这里还有一个 n00b :)
我有一个看起来像这样的 xml 文件:
<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
<!DOCTYPE BPS SYSTEM "bpml.dtd">
<BPS Created="2012-04-24 11:40:41">
<Machine SerialNumber="" Site="" SoftwareRelease="MAP_248204031" VersionInfo="" Name="" Type="BPS200">
<ParameterSection Number="6" StartTime="2012-04-24 11:23:01" EndTime="1970-01-01 00:00:00">
<Operator></Operator>
<HeadercardUnit HeaderCardID="1706539" DepositID="01706539" StartTime="2012-04-24 11:39:57" MilliSec="0" EndTime="2012-04-24 11:40:40" Rejects="NO">
<Counter Currency="HRK" DenomID="22550" Value="200" Quality="Fit" Output="Stacked" Number="192"></Counter>
<Counter Currency="HRK" DenomID="22550" Value="200" Quality="Unfit" Output="Stacked" Number="7"></Counter>
</HeadercardUnit>
</ParameterSection>
</Machine>
</BPS>
我需要将值从它放入 mysql 数据库,但我不知道如何从该 xml 读取嵌套值。
这是我到目前为止所做的尝试,只是为了看看发生了什么:
$xml = @simplexml_load_file($filename);
if ($xml !== FALSE) {
$row[] = $xml->Machine->ParameterSection->HeadercardUnit; // tried to throw values in the array - no go
foreach ($row as $item) {
echo 'item: ' . $item . "<br>";
}
}
但这不起作用。
这是我的插入语句:
INSERT INTO counttable (DenomID, Quality, Number, headercard) VALUES (22550, 'Fit', 192, 1706539)
可能使用来自 XML 的关联值数组。像这样的
$count = array('HeaderCardID'='1706539', 'DenomID'='22550', 'Quality'='Fit', 'Number'='192')
然后:
INSERT INTO counttable (DenomID, Quality, Number, headercard) VALUES ('$count[1]', '$count[2]', '$count[3]', '$count[0]')
对于 xml 中的每个 Counter 行,依此类推。它可以是单个 xml 中的多个 Counter 行。
【问题讨论】:
-
你的预期输出是什么?
-
@LorenzoMarcon 计数器已更正。
-
@ShankarDamodaran 我想获取所有键和值或带有值的变量的数组。我可以用来放入数据库的东西
-
这里 [link]stackoverflow.com/questions/17917539/read-xml-file-with-php 是非常相似的问题,但答案不适用于 xml 文件