From f435981d901ed9d592ef73fabc109ec4f846022a Mon Sep 17 00:00:00 2001 From: Mike Dalessio Date: Wed, 30 Sep 2015 12:20:04 -0400 Subject: [PATCH] WIP for properly tracking line numbers in JRuby. Related to #1223. --- .../nokogiri/internals/NokogiriDomParser.java | 24 +++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/ext/java/nokogiri/internals/NokogiriDomParser.java b/ext/java/nokogiri/internals/NokogiriDomParser.java index cefae5e4b5..550ab9330b 100644 --- a/ext/java/nokogiri/internals/NokogiriDomParser.java +++ b/ext/java/nokogiri/internals/NokogiriDomParser.java @@ -39,6 +39,12 @@ import org.apache.xerces.parsers.DOMParser; import org.apache.xerces.parsers.XIncludeParserConfiguration; import org.apache.xerces.xni.parser.XMLParserConfiguration; +import org.apache.xerces.xni.XMLLocator; +import org.apache.xerces.xni.NamespaceContext; +import org.apache.xerces.xni.Augmentations; +import org.apache.xerces.xni.QName; +import org.apache.xerces.xni.XMLAttributes; +import org.apache.xerces.xni.Augmentations; import org.cyberneko.dtd.DTDConfiguration; import org.w3c.dom.Document; import org.xml.sax.Attributes; @@ -57,6 +63,7 @@ public class NokogiriDomParser extends DOMParser { protected DOMParser dtd; protected boolean xInclude; protected XMLParserConfiguration config; + protected XMLLocator locator; public NokogiriDomParser(XMLParserConfiguration config) { super(config); @@ -113,4 +120,21 @@ public InputSource resolveEntity(String publicId, String systemId) return source; } } + + @Override + public void startDocument(XMLLocator locator, + String encoding, + NamespaceContext namespaceContext, + Augmentations augs) { + this.locator = locator; + super.startDocument(locator, encoding, namespaceContext, augs); + } + + @Override + public void startElement(QName element, + XMLAttributes attributes, + Augmentations augs) { + System.out.println(element + ": " + locator.getLineNumber()); + super.startElement(element, attributes, augs); + } }