@@ -38,7 +38,7 @@ class FormatCommand extends AbstractCommand {
3838 private static final Logger LOGGER = LoggerFactory .getLogger (FormatCommand .class );
3939
4040 /** StAX InputFactory */
41- private XMLInputFactory inputFactory = hardenFactory ( XMLInputFactory .newInstance ());
41+ private XMLInputFactory inputFactory = XMLInputFactory .newInstance (). newInstance ( );
4242
4343 /** StAX OutputFactory */
4444 private XMLOutputFactory outputFactory = XMLOutputFactory .newInstance ();
@@ -324,8 +324,27 @@ private void parseXmlAndCharset(POMDocument pomFile) throws XMLStreamException,
324324 String originalPomCharsetString =
325325 new String (pomFile .getOriginalPom (), pomFile .getCharset ());
326326
327- String untrimmedOriginalContent =
328- originalPomCharsetString .substring (elementStart , offset );
327+ var prev = prevEvents .get (prevEvents .size () - 1 );
328+ String untrimmedOriginalContent = "" ;
329+ // is self-closing element, tag is contained within the offset of the next element
330+ if (prev instanceof StartElement
331+ && prev .getLocation ().getCharacterOffset ()
332+ == endElementEvent .getLocation ().getCharacterOffset ()) {
333+ untrimmedOriginalContent =
334+ originalPomCharsetString .substring (
335+ offset , eventReader .peek ().getLocation ().getCharacterOffset ());
336+ } else {
337+ // is empty tag, the last character events is not in between the tags
338+ if (prev .isStartElement ()) {
339+ untrimmedOriginalContent =
340+ originalPomCharsetString .substring (
341+ prev .getLocation ().getCharacterOffset (),
342+ eventReader .peek ().getLocation ().getCharacterOffset ());
343+
344+ } else {
345+ untrimmedOriginalContent = originalPomCharsetString .substring (elementStart , offset );
346+ }
347+ }
329348
330349 String trimmedOriginalContent = untrimmedOriginalContent .trim ();
331350
0 commit comments