class REXML::Entity
常量
- ENTITYDECL
- ENTITYDEF
- ENTITYVALUE
- EXTERNALID
- GEDECL
- NDATADECL
- PEDECL
- PEDEF
- PEREFERENCE
- PEREFERENCE_RE
- PUBIDCHAR
- PUBIDLITERAL
- SYSTEMLITERAL
属性
external[R]
name[R]
ndata[R]
pubid[R]
ref[R]
value[R]
公共类方法
matches?(string) 点击切换源代码
评估给定的字符串是否匹配实体定义,如果是,则返回 true,否则返回 false。
# File rexml-3.4.0/lib/rexml/entity.rb, line 67 def Entity::matches? string (ENTITYDECL =~ string) == 0 end
new(stream, value=nil, parent=nil, reference=false) 点击切换源代码
创建一个新实体。可以通过传递名称和值给构造函数来构造简单实体;这将创建一个通用的、简单的实体引用。对于任何更复杂的情况,您必须将 Source
与实体定义一起传递给构造函数,或者使用访问器方法。警告
:除了从流读取实体时之外,不对实体状态进行验证。如果您开始使用访问器,您可以轻松创建不符合规范的 Entity
。
e = Entity.new( 'amp', '&' )
调用超类方法
REXML::Child::new
# File rexml-3.4.0/lib/rexml/entity.rb, line 34 def initialize stream, value=nil, parent=nil, reference=false super(parent) @ndata = @pubid = @value = @external = nil if stream.kind_of? Array @name = stream[1] if stream[-1] == '%' @reference = true stream.pop else @reference = false end if stream[2] =~ /SYSTEM|PUBLIC/ @external = stream[2] if @external == 'SYSTEM' @ref = stream[3] @ndata = stream[4] if stream.size == 5 else @pubid = stream[3] @ref = stream[4] end else @value = stream[2] end else @reference = reference @external = nil @name = stream @value = value end end
公共实例方法
normalized() 点击切换源代码
返回此实体未经处理的原始值。这是规范化值;也就是说,所有 %ent; 和 &ent; 实体都保持不变
# File rexml-3.4.0/lib/rexml/entity.rb, line 86 def normalized @value end
to_s() 点击切换源代码
将此实体作为字符串返回。请参阅 write()。
# File rexml-3.4.0/lib/rexml/entity.rb, line 120 def to_s rv = '' write rv rv end
unnormalized() 点击切换源代码
计算为此实体的非规范化值;也就是说,替换 &ent; 实体。
# File rexml-3.4.0/lib/rexml/entity.rb, line 73 def unnormalized document&.record_entity_expansion return nil if @value.nil? @unnormalized = Text::unnormalize(@value, parent, entity_expansion_text_limit: document&.entity_expansion_text_limit) end
write(out, indent=-1) 点击切换源代码
写出一个完全形成、正确的实体定义(假设 Entity
对象本身有效。)
- out
-
一个实现
<<
的对象,实体将输出到该对象 - indent
-
已弃用 并忽略
# File rexml-3.4.0/lib/rexml/entity.rb, line 98 def write out, indent=-1 out << '<!ENTITY ' out << '% ' if @reference out << @name out << ' ' if @external out << @external << ' ' if @pubid q = @pubid.include?('"')?"'":'"' out << q << @pubid << q << ' ' end q = @ref.include?('"')?"'":'"' out << q << @ref << q out << ' NDATA ' << @ndata if @ndata else q = @value.include?('"')?"'":'"' out << q << @value << q end out << '>' end