[英]Converting Text file to XML using PHP
我只有.txt格式的文件(這些文件要么保存在文件夾中,要么在執行后從桌面打開)。
我想用PHP構建一個應用程序,該應用程序可以檢索這些文件並將其保存為XML格式,然后使用XSLT動態顯示。
有什么方法可以讓我做到這一點?
這是我到目前為止的代碼:
$fp = fopen('optim.txt', 'r');
$xml = new XMLWriter;
$xml->openURI('php://output');
$xml->setIndent(true); // makes output cleaner
$xml->startElement('qualité');
while ($line = fgetcsv($fp)) {
$xml->startElement('qualité');
$xml->writeElement('critere', $line[0]);
$xml->writeElement('poids', $line[1]);
$xml->writeElement('Vm', $line[2]);
$xml->writeElement('SV', $line[3]);
$xml->writeElement('critere', $line[4]);
$xml->writeElement('poids', $line[5]);
$xml->writeElement('Vm', $line[6]);
$xml->writeElement('SV', $line[7]);
$xml->writeElement('resultat', $line[8]);
$xml->endElement();
}
$xml->endElement();
但是沒有結果,有人可以幫助我找到我要去的地方嗎?
問題出在您的電話上:
$xml->openURI('php://output');
這會將輸出直接發送到客戶端瀏覽器,我認為這是您想要執行的操作。 但是,您需要設置正確的標題以反映這一點。
將以下行添加到您的代碼中
header("Content-Type: text/xml");
您將直接在瀏覽器中看到輸出。 該行的實際位置並不重要,但必須在將任何內容發送到瀏覽器之前,最好將其放在$fp = fopen('optim.txt', 'r');
您還應該將最外層元素的名稱更改為“qualité”的復數形式,以免父元素和子元素具有相同的名稱。
此外,在$xml->setIndent(true);
添加此行$xml->startDocument();
否則,您的xml無效。
經過更多的挖掘后,似乎有必要設置默認的時區(我不知道為什么),因此將其添加到腳本的開頭:
date_default_timezone_set("GMT"); //or whatever your default timezone is.
這意味着您的代碼應如下所示:
date_default_timezone_set("GMT"); //or whatever your default timezone is.
header("Content-Type: text/xml"); //Added as part of answer
$fp = fopen('optim.txt', 'r');
$xml = new XMLWriter;
$xml->openURI('php://output');
$xml->startDocument(); // added as part of answer
$xml->setIndent(true); // makes output cleaner
$xml->startElement('qualités'); //changed as part of answer
while ($line = fgetcsv($fp)) {
$xml->startElement('qualité');
$xml->writeElement('critere', $line[0]);
$xml->writeElement('poids', $line[1]);
$xml->writeElement('Vm', $line[2]);
$xml->writeElement('SV', $line[3]);
$xml->writeElement('critere', $line[4]);
$xml->writeElement('poids', $line[5]);
$xml->writeElement('Vm', $line[6]);
$xml->writeElement('SV', $line[7]);
$xml->writeElement('resultat', $line[8]);
$xml->endElement();
}
$xml->endElement();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.