0
我在做什麼錯誤的xpath沒有收拾東西?這個函數在另一個xml文件上工作正常,它的深度稍小。將XML轉換爲CSV Xpath不拾取任何東西
function xml2csv($xmlFile, $xPath) {
$xml = simplexml_load_file($xmlFile);
$path = $xml->xpath($xPath);
$csvData = '';
foreach($path as $item) {
foreach($item as $key => $value) {
$csvData .= '"' . trim($value) . '"' . ',';
}
$csvData = trim($csvData, ',');
$csvData .= "\n";
}
return $csvData;
}
XML使用
<?xml version='1.0'?>
<bl>
<section>
<grade gradeLevel="1">
<level dirname="The folder of pdfs">
<file filename="hello_world.pdf">Hello world</file>
<file filename="the_avengers.pdf">The Avengers</file>
<file filename="batman.pdf">Batman</file>
</level>
</grade>
</section>
</bl>
當調用返回xml2csv('test.xml', 'bl');
什麼,同樣與任何後bl/section/grade/*
等等等等,也嘗試奇異打靶。 我期待至少有文件名輸出..
XML,似乎工作得很好我可以針對以下用同樣的方法上面的XML xml2csv('cars.xml', 'car');
<?xml version='1.0'?>
<cars>
<car>
<color>blue</color>
<price>2000</price>
</car>
<car>
<color>red</color>
<price>10000</price>
</car>
<car>
<color>black</color>
<price>5000</price>
</car>
</cars>
汽車XML輸出
"blue","2000"
"red","10000"
"black","5000"
你嘗試過 「//文件」 爲您的XPath?應該選擇源文檔中任何位置的所有文件節點。 – javram
您是不是通過刪除名稱空間聲明('xmlns')來簡化XML? – choroba