如何删除<和>在XML中,它是XML消息的一部分

时间:2014-09-09 17:00:07

标签: java xml invalid-characters jtidy

我的XML看起来如下:

<StartTag>
    <MyValueTag>And the value itself contains a < bracket that makes the XML invalid</MyValueTag>
</StartTag>

XML包含'&lt;'使XML无效的字符。

现在最简单的方法是修复XML的源代码,但遗憾的是我无法控制XML的创建。它有像“价值是&lt;超过10“假设”小于“。

无论如何我都可以检查XML这样的事情并逃避这些字符吗?

我试过Looking at this post那个人表示我们应该使用JTidy。但是,当我尝试它时,它不会删除&lt;:

Tidy tidy = new Tidy();
tidy.setInputEncoding("UTF-8");
tidy.setOutputEncoding("UTF-8");
tidy.setWraplen(Integer.MAX_VALUE);
tidy.setPrintBodyOnly(true);
tidy.setXmlOut(true);
tidy.setSmartIndent(true);
ByteArrayInputStream inputStream = new ByteArrayInputStream(data.getBytes("UTF-8"));
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
tidy.parseDOM(inputStream, outputStream);

1 个答案:

答案 0 :(得分:2)

XML无效这一事实意味着您无法使用有效的XML解析器来读取和修复它。如果您无法获得编写该文件的软件的作者来修复该错误,那么您将不得不提出一些特定于应用程序的解决方案。

例如,如果你知道流浪&lt; char只出现在<MyValue>元素的文本中,如果你知道<MyValue>的子元素不会出现其他元素,那么编写一个识别开始和结束的程序会很容易标签,并替换任何&lt; &#60;

之间出现的字符

当然,如果问题不是那么简单,那么解决方案就不会那么简单;但希望你能比解决XML的一般问题更简单。

在您手动修复了一些文件后,&#34;停下来问自己,&#34;我怎么知道&lt; char需要逃脱吗?&#34;然后编写一个运行相同知识的程序。