Skip to content Skip to sidebar Skip to footer

How To Ignore Attribute Without Quotes In Xml

i want to count how many times tag1 occurs givin this 123.xml file ( streaming from the internet) 10-10-10 <

Solution 1:

You input XML/HTML structure has invalid tags/attributes and should be recovered beforehand:

xmlstarlet solution:

xmlstarlet fo -o -R -H -D 123.xml 2>/dev/null | xmlstarlet sel -t -v "count(//tag1)" -n

The output:

2

Details:

  • fo (or format) - Format XML document(s)
  • -o or --omit-decl - omit xml declaration
  • -R or --recover - try to recover what is parsable
  • -D or --dropdtd - remove the DOCTYPE of the input docs
  • -H or --html - input is HTML
  • 2>/dev/null - suppress errors/warnings

Solution 2:

XML always requires quotes around attribute values. If you want to keep using XML, you first must produce valid XML from your input. You could use an SGML processor such as OpenSP (in particular, the osx program) to format your input into wellformed XML. It's as simple as invoking osx <your Input file> on it.

If you're on Ubuntu/Debian Linux, you can install osx by invoking sudo apt-get install opensp on the command line (and similarly on other Unix systems).


Post a Comment for "How To Ignore Attribute Without Quotes In Xml"