2015-05-13 42 views
3

假设有一个XML消息的错误:格式无效的XML成为一个漂亮的格式

良构

<Person><Name>Attila</Name><ID>001</ID><Age>45</Age></Person> 

格式不正确

<Pxxxon><Name>Attila</9327><ID>001</ID><Age>45</Age></Person> 

是有任何Java库或代码可以将非格式良好的XML消息格式化为:

<Pxxxon> 
    <Name>Attila</9327> 
    <ID>001</ID> 
    <Age>45</Age> 
</Person> 

据我所知,目前的Java库只能将有效的XML消息格式化为这种美化格式。

+0

你的例子很简单,但仍然需要一个AI来确定Pxxon对应于Person。可能是Person错过了一个Person节点,或者Pxxxon错过了一个关闭,那么哪三个是对的?想象一下,如果有多个错误,那将导致指数输出的可能性 – flafoux

回答

2

不,因为你列出的“无效”实际上是不合格

良构和有效并不是一回事。

  • 井形成意味着文本对象满足作为XML的W3C要求。
  • 有效表示格式良好的XML满足指定模式提供的附加要求。

详情请参阅Well-formed vs Valid XML,但如果不能很好地形成的数据,它不是XML在所有没有XML解析器将能够读取它格式化。

然后你可能会问什么是非XML解析器?我们会回复,如果它不是XML,它是什么格式?为了解析器能够读取任何数据,必须定义数据的语法。简单地说,数据类似于XML没有充分说明格式,这就是为什么你找不到能够漂亮地打印你提供的数据样本的工具。

-1

对不起,发布它作为答案,我还没有评论。 我不知道是否有lib来做到这一点。但是您可以尝试将字符“> <”替换为“> \ n <”,并验证这些组以添加代码标识。 也许搜索“\ n”并验证下两个字符是否等于结束标记的开头。如果不是,他们添加标识。