NaturalIntelligence / fast-xml-parser

Validate XML, Parse XML and Build XML rapidly without C/C++ based libraries and no callback.
https://naturalintelligence.github.io/fast-xml-parser/
MIT License
2.43k stars 297 forks source link

Parsing an invalid XML element #618

Open bendrissou opened 9 months ago

bendrissou commented 9 months ago

Description

The parser accepts and parses a XML element that is syntactically invalid, without raising an error. This is despite enabling the validator option "-v".

Input

<?xml version="1.0" ?>  <a/> <! <!---->     

In the above example, token <! is duplicated, which I expected to raise an error. The input is saved in a file named example.xml.

Code

./src/cli/cli.js -v example.xml

Output

{ '?xml': { '@_version': 1 }, a: '', '!': '' }

My question is: Why the XML validator doesn't throw an error in this case? Please note that xmllint rejects the input example as invalid.

bendrissou commented 1 month ago

Hi @amitguptagwl

I tried the above input from the code:

#!/usr/bin/env node
const {XMLValidator} = require("../fxp");
const result = XMLValidator.validate('<?xml version="1.0" ?>  <a/> <! <!---->', {
    allowBooleanAttributes: true
});
console.log(result);

Output is:

true

So, the XML input was accepted, despite being invalid.