startElement()
云策文档标注
概述
startElement() 是 WordPress 中用于处理 XML 解析的回调函数,作为 xml_set_element_handler() 的一部分。它主要用于解析 OPML 格式的 XML 标签,提取并存储 OUTLINE 元素的相关数据。
关键要点
- startElement() 是 xml_set_element_handler() 的回调函数,用于开始新的 XML 标签处理。
- 函数接受三个参数:$parser(XML 解析器资源)、$tag_name(XML 元素名称)和 $attrs(XML 元素属性数组)。
- 当 $tag_name 为 'OUTLINE' 时,函数从 $attrs 中提取 TEXT/TITLE、URL/HTMLURL、TARGET、XMLURL 和 DESCRIPTION 属性,并存储到全局数组 $names、$urls、$targets、$feeds 和 $descriptions 中。
- 函数使用全局变量来保存解析数据,适用于 OPML 导入等场景。
代码示例
function startElement( $parser, $tag_name, $attrs ) {
global $names, $urls, $targets, $descriptions, $feeds;
if ( 'OUTLINE' === $tag_name ) {
$name = '';
if ( isset( $attrs['TEXT'] ) ) {
$name = $attrs['TEXT'];
}
if ( isset( $attrs['TITLE'] ) ) {
$name = $attrs['TITLE'];
}
$url = '';
if ( isset( $attrs['URL'] ) ) {
$url = $attrs['URL'];
}
if ( isset( $attrs['HTMLURL'] ) ) {
$url = $attrs['HTMLURL'];
}
// Save the data away.
$names[] = $name;
$urls[] = $url;
$targets[] = isset( $attrs['TARGET'] ) ? $attrs['TARGET'] : '';
$feeds[] = isset( $attrs['XMLURL'] ) ? $attrs['XMLURL'] : '';
$descriptions[] = isset( $attrs['DESCRIPTION'] ) ? $attrs['DESCRIPTION'] : '';
} // End if outline.
}注意事项
- 函数使用全局变量,需确保在调用前已声明相关数组以避免错误。
- 此函数专为 OPML 解析设计,处理其他 XML 格式时可能需要调整逻辑。
- 从 WordPress 0.71 版本引入,保持向后兼容性。
原文内容
Starts a new XML tag.
Description
Callback function for xml_set_element_handler().
Parameters
$parserresourcerequired-
XML Parser resource.
$tag_namestringrequired-
XML element name.
$attrsarrayrequired-
XML element attributes.
Source
function startElement( $parser, $tag_name, $attrs ) { // phpcs:ignore WordPress.NamingConventions.ValidFunctionName.FunctionNameInvalid
global $names, $urls, $targets, $descriptions, $feeds;
if ( 'OUTLINE' === $tag_name ) {
$name = '';
if ( isset( $attrs['TEXT'] ) ) {
$name = $attrs['TEXT'];
}
if ( isset( $attrs['TITLE'] ) ) {
$name = $attrs['TITLE'];
}
$url = '';
if ( isset( $attrs['URL'] ) ) {
$url = $attrs['URL'];
}
if ( isset( $attrs['HTMLURL'] ) ) {
$url = $attrs['HTMLURL'];
}
// Save the data away.
$names[] = $name;
$urls[] = $url;
$targets[] = isset( $attrs['TARGET'] ) ? $attrs['TARGET'] : '';
$feeds[] = isset( $attrs['XMLURL'] ) ? $attrs['XMLURL'] : '';
$descriptions[] = isset( $attrs['DESCRIPTION'] ) ? $attrs['DESCRIPTION'] : '';
} // End if outline.
}
Changelog
| Version | Description |
|---|---|
| 0.71 | Introduced. |