2009-10-27 62 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 
}