模块 REXML::StreamListener
流解析器监听器的模板。请注意,声明(attlistdecl、elementdecl 等)的处理非常简单; REXML
尚未处理 doctype 实体声明,因此您必须自己解析它们。
公共实例方法
如果 doctype 包含 ATTLIST 声明,将导致调用此方法。内容是声明本身,未经解析。例如, <!ATTLIST el attr CDATA REQUIRED> 将以“el attr CDATA REQUIRED”的形式传递给此方法。所有 .*decl 方法都是如此。
# File rexml-3.4.0/lib/rexml/streamlistener.rb, line 51 def attlistdecl element_name, attributes, raw_content end
当在文档中遇到 <![CDATA[ … ]]> 时调用。 @p content “…”
# File rexml-3.4.0/lib/rexml/streamlistener.rb, line 83 def cdata content end
当遇到注释时调用。 @p comment 注释的内容
# File rexml-3.4.0/lib/rexml/streamlistener.rb, line 33 def comment comment end
处理 doctype 声明。doctype 的任何未提供的属性都将为 nil。 例如,<!DOCTYPE me PUBLIC “foo” “bar”> @p name doctype 的名称;例如,“me” @p pub_sys “PUBLIC”、“SYSTEM”或 nil。例如,“PUBLIC” @p long_name 提供的长名称,或 nil。例如,“foo” @p uri doctype 的 uri,或 nil。例如,“bar”
# File rexml-3.4.0/lib/rexml/streamlistener.rb, line 41 def doctype name, pub_sys, long_name, uri end
当 doctype 完成时调用
# File rexml-3.4.0/lib/rexml/streamlistener.rb, line 44 def doctype_end end
<!ELEMENT …>
# File rexml-3.4.0/lib/rexml/streamlistener.rb, line 54 def elementdecl content end
当在 doctype 声明中遇到 %foo; 时调用。 @p content “foo”
# File rexml-3.4.0/lib/rexml/streamlistener.rb, line 79 def entity content end
<!ENTITY …> 传递给此方法的参数是实体声明的数组。它可以有多种格式,但通常会返回 (示例,结果)
<!ENTITY % YN '"Yes"'> ["YN", "\"Yes\"", "%"] <!ENTITY % YN 'Yes'> ["YN", "Yes", "%"] <!ENTITY WhatHeSaid "He said %YN;"> ["WhatHeSaid", "He said %YN;"] <!ENTITY open-hatch SYSTEM "http://www.textuality.com/boilerplate/OpenHatch.xml"> ["open-hatch", "SYSTEM", "http://www.textuality.com/boilerplate/OpenHatch.xml"] <!ENTITY open-hatch PUBLIC "-//Textuality//TEXT Standard open-hatch boilerplate//EN" "http://www.textuality.com/boilerplate/OpenHatch.xml"> ["open-hatch", "PUBLIC", "-//Textuality//TEXT Standard open-hatch boilerplate//EN", "http://www.textuality.com/boilerplate/OpenHatch.xml"] <!ENTITY hatch-pic SYSTEM "../grafix/OpenHatch.gif" NDATA gif> ["hatch-pic", "SYSTEM", "../grafix/OpenHatch.gif", "gif"]
# File rexml-3.4.0/lib/rexml/streamlistener.rb, line 72 def entitydecl content end
当遇到指令时调用。 例如: <?xsl sheet=‘foo’?> @p name 指令的名称;在示例中,“xsl” @p instruction 指令的其余部分。在示例中,“sheet=‘foo’”
# File rexml-3.4.0/lib/rexml/streamlistener.rb, line 29 def instruction name, instruction end
<!NOTATION …>
# File rexml-3.4.0/lib/rexml/streamlistener.rb, line 75 def notationdecl content end
当遇到标记时调用。 @p name 标记名称 @p attrs 属性/值对的数组数组,适合与 assoc 或 rassoc 一起使用。即,<tag attr1=“value1” attr2=“value2”> 将导致 tag_start
( “tag”, # [[“attr1”,“value1”],])
# File rexml-3.4.0/lib/rexml/streamlistener.rb, line 14 def tag_start name, attrs end
当在文档中遇到文本时调用 @p text 文本内容。
# File rexml-3.4.0/lib/rexml/streamlistener.rb, line 23 def text text end
当在文档中遇到 XML PI 时调用。 例如:<?xml version=“1.0” encoding=“utf”?> @p version version 属性值。 例如,“1.0” @p encoding encoding 属性值,或 nil。例如,“utf” @p standalone standalone 属性值,或 nil。例如,nil
# File rexml-3.4.0/lib/rexml/streamlistener.rb, line 90 def xmldecl version, encoding, standalone end