📅  最后修改于: 2023-12-03 15:33:39.741000             🧑  作者: Mango
XML(可扩展标记语言)是一种文本格式,用于存储和传输数据。PHP 提供了丰富的函数和扩展来处理 XML。
PHP 提供了两种解析 XML 的方式:SAX(Simple API for XML)和 DOM(Document Object Model)。
SAX 是一种基于事件的解析器。它逐行扫描 XML 文档,当它发现某个元素时,它会触发一个事件(例如 startElement
或 endElement
)来通知应用程序。因此 SAX 解析器常常是一个包含多个回调函数的类。
可以使用 PHP 内置的 xml_parser_create
函数创建 SAX 解析器,并使用 xml_set_element_handler
函数注册回调函数。
$parser = xml_parser_create();
xml_set_element_handler($parser, "startElement", "endElement");
function startElement($parser, $name, $attrs) {
// 处理元素开始标签
}
function endElement($parser, $name) {
// 处理元素结束标签
}
DOM 是一种基于树形结构的解析器。它将整个 XML 文档加载到内存中,并将其表示为一个 DOM 树。每个 XML 元素都是树中的一个节点对象。可以使用 DOM 解析器轻松地遍历树并操作其节点。
可以使用 PHP 内置的 DOMDocument
类创建 DOM 解析器。
$doc = new DOMDocument();
$doc->loadXML($xml);
$elements = $doc->getElementsByTagName("element");
foreach ($elements as $element) {
// 处理元素
}
可以使用 SimpleXMLElement
类创建新的 XML 文档。可以使用对象和数组来创建 XML 元素和属性。
$xml = new SimpleXMLElement('<root/>');
$xml->addChild('child1', 'value1');
$child2 = $xml->addChild('child2');
$child2->addAttribute('attribute', 'value2');
可以使用 simplexml_load_file
和 simplexml_load_string
函数从 XML 文件或字符串中加载 XML 文档。
$xml = simplexml_load_file('example.xml');
// 遍历元素
foreach ($xml->children() as $child) {
// 处理元素
}
// 创建 XML 文档
$xml = new SimpleXMLElement('<root/>');
$xml->addChild('child1', 'value1');
$xml->asXML('example.xml');
XML 在 Web 应用程序中使用广泛,可以用于数据交换、配置文件、模板等等。常见的应用场景包括 RSS 订阅、SOAP Web 服务、AJAX 数据传输等。