![]() |
1
39
非常简单:使用XML库。那样的话 正确的 而不需要详细了解XML规范的各个部分。 |
![]() |
2
113
正如其他人提到的,使用XML库是最简单的方法。如果你真的想逃离自己,你可以看看
|
![]() |
3
18
就用吧。
这将允许除结尾以外的任何字符
因此,您可以包含非法字符,如&和>。例如。
但是,属性将需要转义,因为CDATA块不能用于它们。 |
![]() |
4
14
试试这个:
|
![]() |
5
13
这对于我提供文本字符串的转义版本很有效:
|
![]() |
6
8
要使用apache commons lang转义控制字符,请使用
|
![]() |
7
6
理想主义认为使用一个XML库,而imho如果你对XML有一个基本的概念,那么常识和性能就一直在说模板。可以说,它的可读性也更高。尽管使用库的转义例程可能是个好主意。 考虑这个:XML 是 是人类写的。 将XML作为“对象”时,使用库生成XML更好地模拟问题。例如,如果可插入模块参与构建这个XML的过程。
编辑:关于如何在模板中实际转义XML,使用CDATA或
|
![]() |
8
6
StringEscapeUtils.escapeXML()的行为已从Commons Lang 2.5更改为3.0。 它现在不再转义大于0x7f的Unicode字符。 这是一件好事,旧方法有点急于转义那些可以插入到UTF8文档中的实体。 GoogleGuava11.0中包含的新逃犯似乎也很有希望: http://code.google.com/p/guava-libraries/issues/detail?id=799 |
![]() |
9
6
|
![]() |
10
6
这个问题已经8岁了,仍然不是一个完全正确的答案!不,您不必导入整个第三方API来完成这个简单的任务。糟糕的建议。 以下方法将:
我尝试过针对最常见的情况进行优化,同时仍然确保您可以通过管道/dev/random来完成这一过程,并获得XML中的有效字符串。
编辑:对于那些仍然坚持愚蠢的编写自己的代码,当有完全好的Java API来处理XML时,你可能想知道,包含在Oracle Java 8中的STAXAPI(我还没有测试过其他人)没有正确地编码CDATA内容:它不逃逸]内容中的序列。第三方库,甚至是Java核心的一部分,并不总是最好的选择。 |
![]() |
11
5
注意:你的问题是关于 逃逸 不是 编码 . 转义使用<等来允许解析器区分“这是一个XML命令”和“这是一些文本”。编码是您在XML头(utf-8、iso-8859-1等)中指定的内容。 首先,正如其他人所说,使用XML库。XML看起来很简单,但是编码+转义的东西是暗巫毒(一旦遇到umlauts、日语和其他奇怪的东西,比如” full width digits “(&ff11;为1))。保持XML的可读性是西西弗斯的任务。 我建议不要尝试巧妙地使用XML进行文本编码和转义。但不要让它阻止你尝试;只要记住它什么时候咬了你(它会的)。 也就是说,如果您只使用UTF-8,为了使内容更具可读性,可以考虑使用以下策略:
我在一个SQL编辑器中使用它,它允许开发人员将SQL从第三方SQL工具剪切并粘贴到XML中,而不用担心转义。这是因为在我们的例子中,SQL不能包含umlauts,所以我是安全的。 |
![]() |
12
4
虽然原则上我同意jon skeet的观点,但有时我没有选择使用外部XML库。在Java中包含的标准XML库中不存在简单的值(属性或标记,而不是完整文档)。 因此,基于我在这里和其他地方看到的不同答案,这里是我最终创建的解决方案(没有简单的复制/粘贴工作):
上面包含了几个不同的内容:
在某个时刻,我将编写这个函数的反转,tounescaped()。我只是今天没时间这么做。当我这样做时,我会来用代码更新这个答案。:) |
![]() |
13
4
对于那些寻找最快编写解决方案的人:使用 apache commons-lang :
记住包括依赖关系:
|
![]() |
14
3
要转义XML字符,最简单的方法是使用ApacheCommonsLang项目,JAR可从以下位置下载: http://commons.apache.org/lang/ 类是:org.apache.commons.lang3.StringEscapeUtils; 它有一个名为“escapeXML”的方法,它将返回一个适当的转义字符串。 |
![]() |
15
1
这里有一个简单的解决方案,它也很适合编码重音字符!
输出
|
![]() |
16
0
使用 JAXP 忘记文本处理,它将自动为您完成。 |
![]() |
17
0
尝试使用ApacheXML序列化程序对XML进行编码
|
![]() |
18
0
你可以用
Enterprise Security API (ESAPI) library
,它提供了如下方法
|
![]() |
19
0
如果您正在寻找一个库来完成任务,请尝试:
|
![]() |
20
-1
只是替换
对于其他角色:
|
|
J_Cus504 · 在单匹配语句中使用身份变换和多谓词来沉默节点 5 月前 |
![]() |
surge3333 · 使用PowerShell构建XML 5 月前 |
|
Sandeep · XSLT代码,用于根据条件提取元素值 7 月前 |
|
Reto · XSLT 3.0突发流-如何存储/获取另一个分支的值 7 月前 |
![]() |
Ian Kemp · 如何从SelectXml调用本机XPath函数? 7 月前 |