Java 子字符串中的字符串替换

Java 子字符串中的字符串替换,java,xml,regex,Java,Xml,Regex,我想为Java类编写一个方法。该方法接受XML数据字符串作为输入,如下所示 <?xml version="1.0" encoding="UTF-8"?> <library> <book> <name> <> Programming in ANSI C <> </name> <author> <> Balaguruswamy <> &l

我想为Java类编写一个方法。该方法接受XML数据字符串作为输入,如下所示

<?xml version="1.0" encoding="UTF-8"?>
<library>

    <book>
        <name> <> Programming in ANSI C <> </name>
        <author> <>  Balaguruswamy <> </author>
        <comment> <> This comment may contain xml entities such as &, < and >. <> </comment>
    </book>

    <book>
        <name> <> A Mathematical Theory of Communication <> </name>
        <author> <> Claude E. Shannon <> </author>
        <comment> <> This comment also may contain xml entities. <> </comment>
    </book>

    <!-- This library contains more than ten thousand books. -->
</library>

ansic编程
巴拉古鲁斯瓦米
此注释可能包含xml实体,如&、<和>。
传播的数学理论
克劳德·E·香农
此注释还可能包含xml实体。

XML字符串包含大量以开头和结尾的子字符串。子字符串可能包含XML实体,如此数据是传递给您的,还是您可以控制它?如果是这样,那么我建议使用块。如果您确实不确定输入到xml块中的数据,那么在将其保存到DB之前,只需将所有内容包装在CDATA中

如果你不能控制这一点,那么据我所知,这将需要相当数量的编码,因为你可能需要处理大量的边缘情况。不是一个简单的正则表达式能够处理的事情(如果一个有效块正在开始,如果一个正在结束,如果一个已经结束,等等)

这是一个非常基本的正则表达式,但我真的相信剩下的就变得非常复杂了

\<\>* //For <> changes
\*//用于更改
您可以按照

  • 通过Dom或SAX读取XML文件
  • 用正则表达式替换字符串
  • 使用Dom或SAX编写XML文件

  • 您是要求转义所有XML,还是仅仅转义标记之间发生的错误?谁在生成XML?解决这个问题的正确方法似乎是输出有效的xml,而不是修改内容。由于XML字符串可能包含三万多个子字符串,因此在添加到XML字符串之前转义所有XML实体将是低效的。这就是为什么我们只引入了,并且该方法负责在使用它之前转义XML实体;请试一试,并告诉我结果。谢谢!我认为这对我来说是一个新的想法。这不是我想要遵循的。我想这对我会有用的。我应该将子字符串“]]>”之前的所有“”替换为子字符串“]]>”之后的“”,对吗?很抱歉之前的删除,我被分散了注意力并误读了您的一条评论,所以我想我以后会以不同的方式重写我的答案。我已经对它进行了更新,并将很快给出一些有效的正则表达式:)但是,如果您可以使用CDATA块保存数据,这将使生活变得更轻松:D