簡體   English   中英

使用PHP將文本文件轉換為XML

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM