我有一个应用程序,我需要解析或标记化XML 和保留原始文本(例如,不解析实体,不转换属性中的空格,保持属性顺序等)在Java程序中。
我今天花了几个小时尝试使用StAX,SAX,XSLT,TagSoup等,然后才意识到他们都没有这样做。我不能花费更多的时间来解决这个问题,手动解析文本似乎非常重要。是否有任何Java库可以帮助我标记化XML?
编辑:为什么我这样做? - 我有一个大型XML文件,我想以编程方式进行少量本地化更改,需要进行审核。能够使用diff工具是非常有价值的。如果解析器/过滤器规范化XML,那么我在diff工具中看到的只是“红色墨水”。如果存在这样的事情,那么首先生成XML的应用程序不是我可以轻易改变以生成“规范XML”的东西。
答案 0 :(得分:2)
我认为你可能需要生成自己的语法。
一些链接:
答案 1 :(得分:2)
我认为任何XML解析器都不会做你想要的。为什么?例如,XML规范不强制执行属性排序。我认为你将不得不自己解析它,这是非常重要的。
你为什么要这样做?我猜你有一些客户'XML'强制执行或依赖非标准构造。在那种情况下,我会推迟修复,而不是跳过许多修复来尝试适应这种情况。
答案 2 :(得分:0)
我不完全确定我明白你想要做什么。您是否尝试将CDATA区域用于不希望解析器触及的文档部分?
同样依赖属性顺序是不一个好主意 - 如果我正确记住XML标准,那么永远不会期望订单。
听起来您正在处理一些格式错误的XML,并且首先将其转换为正确的XML会更容易。