函数文档

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.