Name cannot begin with the '1' character, hexadecimal value 0x31. Line 2, position 2

You are supposed to change the tag name since the one you wrote violates the xml standard. Just to remember the interesting portion of it here:

XML Naming Rules

XML elements MUST follow these naming rules:

  • Names can contain letters, numbers, and other characters
  • Names cannot start with a number or punctuation character
  • Names cannot start with the letters xml (or XML, or Xml, etc)
  • Names cannot contain spaces

Any name can be used, no words are reserved.

as a suggestion to solve your problem mantaining the standard:

  1. Use an attribute, ie <Number value="1212041205115912"/>
  2. Add a prefix to the tag ie <_1212041205115912/>

Of course you can mantain the structure you propose by writing your own format parser, but I can state it would be a really bad idea, because in the future someone would probably extend the format and would not be happy to see that the file that seems xml it is actually not, and he/she can get angry for that. Furthermore, if you want your custom format, use something simpler, I mean: messing a text file with some '<' and '>' does not add any value if it is not an officially recognized format, it is better to use someting like a simple plain text file instead.


IF you absolutely cant change it, eg. for some reason the format is already out in the wild and used by other systems/customers/whatever.

Since it is an invalid xml document, try to clean it up before parsing it. eg. make a regex that replaces all < number> tags with < IMessedUp>number< /IMessedUp> and then parse it.

Sort of iffy way to do it, but I will solve your problem.


If you need to process this document, then stop thinking of it as XML, and cast aside any thoughts of using XML tools to process it. You're dealing with a proprietary format and you will need to write your own tools to handle it. If you want the benefits of using XML technology, you will have to redesign your documents so they are valid XML.