Skip to main content

SAXParser: too many exceptions for invalid XML character..

I'm working on my Similarity Search project, in which I have to implement the Tree Edit Distance and Traversal String Edit Distance.

Trees are all represented in XML format and I'm using SAXParser to parse those XML files in java. I've used it a lot of times before but still, I don't quite like.

So my first step is to create a valid XML database. However, "valid" to be parsed using SAXParser is complicated!!

Here is what I get again and again:

File Read Error: org.xml.sax.SAXParseException: The content of elements must consist of well-formed character data or markup.
org.xml.sax.SAXParseException: The content of elements must consist of well-formed character data or markup.

The reasons can be different, like:
- Tags cannot contain number (e.g., <1> is an invalid tag)
- Tags cannot contain some symbols, like {, ., ?, etc. ("_" or "-" is fine)
- Tags cannot be empty

However, in my database, all of the tag are numbers..
To make it a valid XML file, I have defined a mapping between each number to a valid character in the alphabet using ASCII code. For example: 0 is mapped to a, 1 to b, 2 to c, etc. using the following code:


public String toXMLTagString(String instr) {
String outstr = "";
for (int i=0; i<instr.length(); i++)
outstr+= new Character((char)(Character.getNumericValue(instr.charAt(i))+97)).toString();

return outstr;
}



So with instr = "01234", outstr = "abcef"
Note: "a" corresponds to 97 in the ASCII code.

Comments

  1. This comment has been removed by a blog administrator.

    ReplyDelete
  2. This comment has been removed by a blog administrator.

    ReplyDelete

Post a Comment

Popular posts from this blog

Random variables

A random variable is a mapping from a sample space to real numbers $\Omega \rightarrow \mathrm{R}$ At a certain point in most probability courses, we don't see the sample space, but it's always there, lurking in the background. For example: Let $\Omega = \{(x,y); x^2 + y^2 \leq 1\}$ be the unit disc. Consider drawing a point "at random" from $\Omega$. Outcome: $\omega = (x,y)$. Examples of random variables: $X(\omega) = x$, $X(\omega) = y$, $Z(\omega) = x + y$

Quick text files merging, data preparation

It's very often that in natural language processing, you will have to re-format your data to take as inputs to different systems. In this case, these simple linux commands will help you do it much quicker without having to write a script. 1. Merging two files to one file with two column Input f1 looks like this: 1 2 3 4 Input f2 looks like this: a b c d Output f3 will look like this: 1  a 2  b 3  c 4  d Command: paste f1 f2 > f3  The delimiter by default is a tab. You can also define it (for example, separated by a comma) as follows: paste -d ',' f1 f2 > f3 2.  Create a line number to each line of a text file Assume that you want to create an index to each line in a text file, i.e. inserting a line number and then a tab before the content of each line: Input f1: a b c d Output f2: 1  a 2  b 3  c 4  d Command: nl f1 > f2 3. Joining two files with a common field Input f1: 1   aaa...