Comments (3)
@jvnill Thanks for pointing out this difference.
This StackOverflow thread has good discussion of the differences.
from nori.
Thanks for the prompt response @olleolleolle. It's not actually the REXML parser that is the issue. It's the Nori::Parser::REXML
wrapper
require "rexml/document"
class Nori
module Parser
# = Nori::Parser::REXML
#
# REXML pull parser.
module REXML
def self.parse(xml, options)
stack = []
parser = ::REXML::Parsers::BaseParser.new(xml)
while true
event = unnormalize(parser.pull)
case event[0]
when :end_document
break
when :end_doctype, :start_doctype
# do nothing
when :start_element
stack.push Nori::XMLUtilityNode.new(options, event[1], event[2])
when :end_element
if stack.size > 1
temp = stack.pop
stack.last.add_node(temp)
end
when :text, :cdata
stack.last.add_node(event[1]) unless event[1].strip.length == 0 || stack.empty?
end
end
stack.length > 0 ? stack.pop.to_hash : {}
end
def self.unnormalize(event)
event.map! do |el|
if el.is_a?(String)
::REXML::Text.unnormalize(el)
elsif el.is_a?(Hash)
el.each {|k,v| el[k] = ::REXML::Text.unnormalize(v)}
else
el
end
end
end
unnormalize
performs the conversion to unescaped characters but this shouldn't be the case for text inside CDATA.
from nori.
submitted #94
from nori.
Related Issues (20)
- dont monkeypatch String#snakecase
- Nori doesn't handle lists of named attributes and values
- Strings as Nori::StringWithAttributes HOT 8
- xsi:nil="true" nodes not nil when additional attributes present HOT 2
- Why add Hash#to_params HOT 1
- Make advanced type casting actually advanced HOT 2
- strip error HOT 3
- advance_type_casting regex fails to parse time like fields HOT 3
- XML Parsing fails with unescaped ampersand in content (not tag) HOT 1
- Breaking change between 2.4.0 and 2.6.0 HOT 1
- Nori dynamic require breaks in Jruby HOT 3
- does not work with plain tags and whitespace
- Selective disabling of advanced_typcasting for certain attributes
- Strange error when passing malformed xml
- empty_tag_value not obeying xsi:nil ?
- Raise on error?
- strip_namespaces doesn't work for attributes HOT 1
- Inconsistent types when parsing empty tags HOT 2
- Nori::StringWithAttributes should implement `#as_json`
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from nori.