tagsoup打破了很好的xml

时间:2014-07-18 10:39:50

标签: java xml tag-soup

清理xml文件我已经获得了意想不到的结果:tagsoup已经孤立了一些关闭父标记的属性。它还会降低父标记的名称。

在tags之前:

<Objects>
    <Object>
      <ObjectID>240</ObjectID>
      [...]
      <Status>Not Ready</Status>
      <Title>Some description which includes word/word, 22,000</Title>
      <Url>http://example.com/withquerystring?id=240&amp;other=1&amp;url=http%3A%2F%2Fredirected.example.com%2F40</Url>
      [...]
      <Owner>
        <Name>JOHN MARSHALL, MR</Name>
      </Owner>
    </Object>
    <Object>
      <ObjectID>122</ObjectID>
      [...]

在tagsoup:

之后
<Objects>
    <object>
      <ObjectID>240</ObjectID>
      [...]
      <Status>Not Ready</Status>
    </object>
    <Title>Some description which includes word/word, 22,000</Title>
    <Url>http://example.com/withquerystring?id=240&amp;other=1&amp;url=http%3A%2F%2Fredirected.example.com%2F40</Url>
    [...]
    <Owner>
        <Name>JOHN MARSHALL, MR</Name>
    </Owner>
    <object>
      <ObjectID>122</ObjectID>
      [...]

我在使用这个库的java项目中:

import org.ccil.cowan.tagsoup.Parser;
import org.ccil.cowan.tagsoup.XMLWriter;
import org.xml.sax.InputSource;
import org.xml.sax.SAXException;
import org.xml.sax.XMLReader;

我正在使用Java 6.

任何线索?
有效xml文件的所需输出将是相同的文件(可能只是更改细节,但不是结构),不是吗?

1 个答案:

答案 0 :(得分:0)

Tagsoup旨在用作HTML解析器并清理糟糕的HTML。对于由HTML标签定义的标签名称,知道哪些元素被允许在哪些其他元素内,并将尝试纠正任何错误嵌套的元素。还要记住,在HTML中,与XML不同,标记名称不区分大小写。

在这种情况下,似乎已经确定它知道objecttitle在HTML中应该是什么意思(分别是某种嵌入对象和页面标题),它知道title内不允许object。但是ObjectIDStatus不是已知的HTML元素名称,因此它带来了疑问的好处并让它们独自存在。