PHP-XML
2021-01-20 06:13
标签:start 之间 通过 document class when 需要 检查 number 如需读取和更新 - 创建和处理 - 一个 XML 文档,则需要 XML 解析器。 与 DOM 或 Expat 解析器相比,SimpleXML 仅仅用几行代码就可以从 XML 元素中读取文本数据。 然而,在处理高级 XML 时,比如命名空间,最好使用 Expat 解析器或 XML DOM。 上面的 XML 实例包含了格式良好的 XML。不过这个实例是无效的 XML,因为没有与它关联的文档类型声明 (DTD)。比如 以上代码将输出: XML DOM 把上面的 XML 视为一个树形结构: 在上面的实例中,可以看到了每个元素之间存在空的文本节点。 PHP-XML 标签:start 之间 通过 document class when 需要 检查 number 原文地址:https://www.cnblogs.com/Rain99-/p/13324378.html
1 XML
可扩展标记语言。
一种被设计用来传输和存储数据的语言,其焦点是数据的内容。
设计宗旨是传输数据,而不是显示数据,与HTML不同。
XML 不会做任何事情。XML 被设计用来结构化、存储以及传输信息。
上面的这条便签具有自我描述性。它包含了发送者和接受者的信息,同时拥有标题以及消息主体。
但是,这个 XML 文档仍然没有做任何事情。它仅仅是包装在 XML 标签中的纯粹的信息。我们需要编写软件或者程序,才能传送、接收和显示出这个文档。
一个方便传输数据的格式
XML 文档形成了一种树结构,它从"根部"开始,然后扩展到"枝叶"。
在 XML 中,没有预定义的标签。必须定义自己的标签。
上图表示下面的 XML 中的一本书,这样的书有三本:2 PHP处理XML
PHP内置了两个XML解析器:Expat和DOM,和一个处理XML函数:SimpleXML
有两种基本的 XML 解析器类型:
当执行类似下列的基础任务时,SimpleXML 使用起来非常快捷:
2.1 Expat 解析器
Expat 解析器是基于事件的解析器。PHP内置。
基于事件的解析器集中在 XML 文档的内容,而不是它们的结构。正因为如此,基于事件的解析器能够比基于树的解析器更快地访问数据。
基于事件的解析器把上面的 XML 报告为一连串的三个事件:
然而,在使用 Expat 解析器时,这没有区别。Expat 是不检查有效性的解析器,忽略任何 DTD。
要在 PHP 中初始化 XML 解析器,为不同的 XML 事件定义处理器,然后解析这个 XML 文件。";
break;
case "TO":
echo "To: ";
break;
case "FROM":
echo "From: ";
break;
case "HEADING":
echo "Heading: ";
break;
case "BODY":
echo "Message: ";
}
}
//Function to use at the end of an element
function stop($parser,$element_name)
{
echo "
";
}
//Function to use when finding character data
function char($parser,$data)
{
echo $data;
}
//Specify element handler
xml_set_element_handler($parser,"start","stop");
//Specify data handler
xml_set_character_data_handler($parser,"char");
//Open XML file
$fp=fopen("test.xml","r");
//Read data
while ($data=fread($fp,4096))
{
xml_parse($parser,$data,feof($fp)) or
die (sprintf("XML Error: %s at line %d",
xml_error_string(xml_get_error_code($parser)),
xml_get_current_line_number($parser)));
}
//Free the XML parser
xml_parser_free($parser);
?>
工作原理:2.2 DOM 解析器
DOM 解析器是基于树的解析器。PHP内置。
需要初始化 XML 解析器,加载 XML,并把它输出:
以上代码将输出:
如果在浏览器窗口中查看源代码,会看到下面的 HTML:
上面的实例创建了一个 DOMDocument-Object,并把 "note.xml" 中的 XML 载入这个文档对象中。
saveXML() 函数把内部 XML 文档放入一个字符串,这样我们就可以输出它。
初始化 XML 解析器,加载 XML,并遍历
当 XML 生成时,它通常会在节点之间包含空白。XML DOM 解析器把它们当作普通的元素,如果不注意它们,有时会产生问题。2.3 SimpleXML 函数
SimpleXML 是 PHP 5 中的新特性。内置。
SimpleXML 扩展提供了一种获取 XML 元素的名称和文本的简单方式。
SimpleXML 可把 XML 文档(或 XML 字符串)转换为对象,比如:
输出:
输出:
输出: