模块 REXML::Node
表示树中的一个节点。节点永远不会被遇到,除非作为其他对象的超类。节点有兄弟姐妹。
公共实例方法
each_recursive() { |node| ... } 点击切换源代码
递归访问self
的所有子节点
# File rexml-3.4.0/lib/rexml/node.rb, line 54 def each_recursive(&block) # :yields: node stack = [] each { |child| stack.unshift child if child.node_type == :element } until stack.empty? child = stack.pop yield child n = stack.size child.each { |grandchild| stack.insert n, grandchild if grandchild.node_type == :element } end end
find_first_recursive() { |node| ... } 点击切换源代码
查找(并返回)第一个(递归地)使块计算结果为 true 的子节点。如果未找到,则返回 nil
。
# File rexml-3.4.0/lib/rexml/node.rb, line 67 def find_first_recursive(&block) # :yields: node each_recursive {|node| return node if block.call(node) } return nil end
indent(to, ind) 点击切换源代码
# File rexml-3.4.0/lib/rexml/node.rb, line 39 def indent to, ind if @parent and @parent.context and not @parent.context[:indentstyle].nil? then indentstyle = @parent.context[:indentstyle] else indentstyle = ' ' end to << indentstyle*ind unless ind<1 end
index_in_parent() 点击切换源代码
返回 self
在其父节点的数组中所处的位置,索引从 1 开始。
# File rexml-3.4.0/lib/rexml/node.rb, line 76 def index_in_parent parent.index(self)+1 end
next_sibling_node() 点击切换源代码
@return 下一个兄弟节点(如果未设置则为 nil)
# File rexml-3.4.0/lib/rexml/node.rb, line 11 def next_sibling_node return nil if @parent.nil? @parent[ @parent.index(self) + 1 ] end
parent?() 点击切换源代码
# File rexml-3.4.0/lib/rexml/node.rb, line 48 def parent? false; end
previous_sibling_node() 点击切换源代码
@return 上一个兄弟节点(如果未设置则为 nil)
# File rexml-3.4.0/lib/rexml/node.rb, line 17 def previous_sibling_node return nil if @parent.nil? ind = @parent.index(self) return nil if ind == 0 @parent[ ind - 1 ] end
to_s(indent=nil) 点击切换源代码
- 缩进
-
已弃用 此参数现在被忽略。有关更改输出样式,请参阅
REXML::Formatters
包中的格式化程序。
# File rexml-3.4.0/lib/rexml/node.rb, line 27 def to_s indent=nil unless indent.nil? Kernel.warn( "#{self.class.name}.to_s(indent) parameter is deprecated", uplevel: 1) f = REXML::Formatters::Pretty.new( indent ) f.write( self, rv = "" ) else f = REXML::Formatters::Default.new f.write( self, rv = "" ) end return rv end