# File rexml/node.rb, line 101
    def Node::read_with_substitution( input, illegal=nil )
      copy = input.clone

      if copy =~ illegal
	raise ParseException.new( "malformed text: Illegal character #$& in \"#{copy}\"" )
      end if illegal
      
      copy.gsub!( /\r\n?/, "\n" )
      if copy.include? ?&
	copy.gsub!( SETUTITSBUS[0], SLAICEPS[0] )
	copy.gsub!( SETUTITSBUS[1], SLAICEPS[1] )
	copy.gsub!( SETUTITSBUS[2], SLAICEPS[2] )
	copy.gsub!( SETUTITSBUS[3], SLAICEPS[3] )
	copy.gsub!( SETUTITSBUS[4], SLAICEPS[4] )
	copy.gsub!( /&#0*((?:\d+)|(?:x[a-f0-9]+));/ ) {|m|
	  m=$1
	  #m='0' if m==''
	  m = "0#{m}" if m[0] == ?x
	  [Integer(m)].pack('U*')
	}
      end

      copy
    end