最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
PHP 处理XML文件实例详解
时间:2022-06-24 20:49:48 编辑:袖梨 来源:一聚教程网
XML的精髓是什么呢?
XML的精髓是什么呢?
就是我们基于信息描述的、能够体现数据信息之间逻辑关系的、可以确保文件的易读性和易搜索性的自定义标记!
你的XML文件遵循所谓“形式良好”要求的种种语法规则,一个完全意义上的XML文件不仅应该是“形式良好的”,而且还应该是使用了这些自定义标记的“有效”的XML文件。
一个XML文件必须遵守文件类型描述DTD(Document Type Definition)中定义的种种规定。DTD实际上是“元标记”这个概念的产物,它描述了一个标记语言的语法和词汇表,也就是定义了文件的整体结构以及文件的语法。简而言之,DTD规定了一个语法分析器为了解释一个“有效的”XML文件所需要知道的所有规则的细节。
如何写一个XML文件
1. 第一个行
2. 必须有一个最外层的标记
3. XML标记不区分大小写,使用中文都可以, 开始标记是什么, 结束就必须是什么
4. 所有的XML标记必须有结束
5. 所有的属性值必须使用比引号
6. 层次要清楚
7. 相同标记不能嵌套
8. 可以使用实体 & ;
9. 注释问题
10.
PHP如何处理XML文件
其实使用php的xml解析函数,处理xml文档无异于处理文件。只要你根据自己的具体需求编写好几个处理函数就万事大吉了。明白了xml文件的读取,那么生成xml文件也就不成问题了。需要注意的问题是注意xml文件的编码和书写规范。
下面是手册里的例子,确实是经典的例子,
代码如下 | 复制代码 |
$file = "xmltest.xml"; ";"; print "parse completen"; xml_parser_free($xml_parser); ?> xmltest.xml文件 还有一个是将xml文件处理成php数组的例子。 class AminoAcid { var $name; // aa name var $symbol; // three letter symbol var $code; // one letter code var $type; // hydrophobic, charged or neutral function AminoAcid ($aa) { foreach ($aa as $k=>$v) $this->$k = $aa[$k]; } } function readDatabase($filename) { // read the xml database of aminoacids $data = implode("",file($filename));//首先将整篇文章读入数组,之后再将数组连接成字符串,赋值给$data. $parser = xml_parser_create(); xml_parser_set_option($parser,XML_OPTION_CASE_FOLDING,0);//不使用大小写折叠 xml_parser_set_option($parser,XML_OPTION_SKIP_WHITE,1); xml_parse_into_struct($parser,$data,$values,$tags);//将 XML 数据解析到数组中,该函数将 XML 文件解析到两个对应的数组中, //$tags 参数含有指向 $values 数组中对应值的指针。最后两个数组参数可由指针传递给函数。 xml_parser_free($parser); // loop through the structures //针对具体的应用(不同的xml文件,修改此处循环结构得到具体的数组即可。 foreach ($tags as $key=>$val) { if ($key == "molecule") { $molranges = $val; // each contiguous pair of array entries are the // lower and upper range for each molecule definition for ($i=0; $i < count($molranges); $i+=2) { $offset = $molranges[$i] + 1; $len = $molranges[$i + 1] - $offset; $tdb[] = parseMol(array_slice($values, $offset, $len)); } } else { continue; } } // echo "values is:"; // print_r($values); // echo ""; return array($tdb,$values); } function parseMol($mvalues) { for ($i=0; $i < count($mvalues); $i++) $mol[$mvalues[$i]["tag"]] = $mvalues[$i]["value"]; // echo " after parsemol :"; // print_r($mol); // echo ""; return new AminoAcid($mol); } $db = readDatabase("moldb.xml"); echo "** Database of AminoAcid objects:n"; // echo " readdatabase :"; print_r($db[0]); // echo ""; $s = parseMol($db[1]); |
相关文章
- 王者荣耀侦探能力大测试攻略 王者荣耀侦探能力大测试怎么过 11-22
- 无期迷途主线前瞻兑换码是什么 11-22
- 原神欧洛伦怎么培养 11-22
- 炉石传说网易云音乐联动怎么玩 11-22
- 永劫无间手游确幸转盘怎么样 11-22
- 无期迷途主线前瞻兑换码是什么 无期迷途主线前瞻直播兑换码介绍 11-22