I want read the comment only for the object tag in my XML file using SAX parser in Java.
This is an abstract of my file:
<!-- Object Seed term: day, WikiTitle: day-->
<object id="15155220" name="solar day, twenty-four hour period, 24-hour interval, mean solar day, twenty-four hours, si day, día, days, si days, day duration, day, civil day">
<!-- class: "calendar day" -->
<class id="15157041" name="calendar day, civil day"></class>
<!-- class: "unit of time" -->
<class id="15154774" name="time units, unit of time, time unit, units of time"></class>
<!-- class: "" -->
<class id="15113229" name="period of time, time period, period"></class>
<!-- class: "" -->
<class id="00000000" name="time"></class>
<genericPhysicalDescription>
<!-- hasPart: "" -->
<hasPart id="15228378" name="hour, time of day"></hasPart>
<!-- hasPart: "" -->
<hasPart id="15157225" name="day"></hasPart>
<!-- partOf: "calendar" -->
<partOf id="15173479" name="calendrics, calendar, dating style, calendarist, calendars, birthday calendar, calendar strip, secular calendar, calandar, agriculture calendar, calendar system, criminal calendar"></partOf>
<!-- partOf: "" -->
<partOf id="15206296" name="month"></partOf>
<!-- partOf: "" -->
<partOf id="15157225" name="day"></partOf>
</genericPhysicalDescription>
</object>
The
javax.xml.parsers.SAXParser
does not support reading comments. It ignores them.The
org.xml.sax.ext.LexicalHandler
allows you catching comments when parsing with org.xml.sax.XMLReader. See an example at another stackoverflow post or a tutorial at Oracle.If you want to connect a comment to an element, which comes right after it, you can additionally pass a
org.xml.sax.ContentHandler
to the parser and track other XML content by it. I adapted the code that referred to above to print only thatobject
element, which is immediately preceded by a comment:Save this code to "Test.java" and your XML content to "test.xml". Once compiled and executed, it should give you the following output: