2009-10-27 60 views
0

我想知道是否可以打開一個純文本文件的XML文件,所以我可以閱讀每一行和操縱文本?PHP和文件操作

+0

爲什麼你想這樣做嗎?你正在尋求麻煩。所有冗長的xml都沒有語義上的好處。 – 2009-10-27 22:59:21

+0

我同意其他人的觀點,你應該使用XML解析器或DOMDocument,但如果你想知道答案是'是'。 XML只是一個文本文件。你可以用'file','file_get_contents','fread'或者你曾經用來讀取文本文件的方式讀取它。 – NawaMan 2009-10-27 23:11:57

回答

3
$xml_file = '/var/www/file.xml'; 
$contents = file_get_contents($xml_file); // Dumps the entire file into a single string 
$contents = file($xml_file); // Dumps each line into an array 

不過,我會建議使用simplexml_load_file()(即使你說你想避免的話),因爲沒有擔保,以XML將如何被格式化。它可以全部在一行上,或在意想不到的地方用換行符格式化。

+0

我想使用simplexml_load_file(),但我無法弄清楚如何使用它。我最大的問題是從單個節點提取數據。我永遠無法知道對象何時是對象數組,或者對象是對象還是對象中的值,所以我認爲我會堅持使用上面的示例,稍後再分支。謝謝你的幫助。 – cskwrd 2009-10-28 00:30:19

+0

is_array(),is_object(),is_string() – 2009-10-28 01:34:39

1

爲什麼不直接使用任何XML解析器/操縱器?

你可以找到http://www.php.net/manual/en/refs.xml.php

那些引用如果你有那麼一個很好的格式化XML文件,

$file = 'file.xml'; 

// get contents and normalize the newline 
$xml_arr = file($file); 
foreach($xml_arr as &$line){ 
    // do your manipulation to $line 
} 

$ctns = implode("\n",$xml_arr); 
file_put_contents($file,$ctns); // write back 
+1

如果可以通過'file'函數將文件作爲線陣列讀取,爲什麼要用'\ r \ n'分割文件上下文? – 2009-10-27 23:00:44

+0

@伊萬 - 我的不好。用於file_get_contents。 – mauris 2009-10-27 23:02:18

0

讀取文件作爲字符串數組使用file功能:

$lines = file('your_xml_file.xml'); 
foreach($lines as $line) { 
    ## do the stuff for each line 
}