XML中的转义双引号字符


101

xml中的双引号有转义字符吗?我想写一个像这样的标签:

<parameter name="Quote = " ">

但是,如果我输入“,则表示字符串已结束。我需要类似(c ++)的东西:

printf("Quote = \" ");

是否在双引号之前写了一个字符以逃脱它?





简短的答案:&quot; 故事的其余部分……
kjhughes,

Answers:



118

以下是需要在XML中转义的常见字符,从双引号开始:

  1. 双引号(")转义为&quot;
  2. 与符号(&)转义为&amp;
  3. 单引号(')转义为&apos;
  4. 少于(<)被转义为&lt;
  5. 大于(>)转义为&gt;

3
不正确;‘ 不是有效的XML字符。这是一个有效的HTML字符-SGML和XML的SUPERset。
Stefan Steiger

尽管这是有道理的,但我使用过的大多数现代XML解析器都将其视为有效字符。
Dariusz G. Jagielski

&quot; 当字符串用双引号引起来时,Android无法正确解释。在这种情况下,E-max答案是唯一有效的答案。
Softlion '18

@StefanSteiger在此列表中
OrangeDog '18

@Dariusz G. Jagielski:尽管我没有反对现代XML解析器的任何东西-如果您在数据库中使用XML(例如ms / pg),您会发现并非每个软件都在使用现代xml解析器。尤其是当它具有数十年的复杂软件时。就是说,如果每个人都使用现代xml解析器,那将是一件好事。但是,如果该代码已深度集成在较早的复杂软件中,则很难对其进行替换(同时保持100%的向后兼容性)。可以这么说,C或不使用依赖注入的缺点。
Stefan Steiger,

27

其他人已经回答了在这种情况下如何处理特定的转义。

一个更广泛的答案是不要自己去做。使用XML API-几乎每种现有的现代编程平台都可以使用很多。

XML的API将自动处理这样的事情对你来说,使它成为很多困难出问题。除非您自己编写XML API,否则几乎不需要担心此类细节。


11
我不能说我同意。认为我们应该如此依赖API来抽象我们,以至于我们甚至不需要了解如何读写XML,这似乎是愚蠢的。当您将XML API提交给格式错误的文档并使其崩溃时,XML API可能对您没有太大帮助。有人将不得不修复数据以使其加载。
Christopher Painter 2012年

@ChristopherPainter鉴于XML标准的规模,我怀疑确实有很多人真正了解它。现在有许多人认为他们这样做了,但实际上却没有。
恢复莫妮卡

2
好吧,你必须从某个地方开始。在我们这个行业的课程中,我们只是抱怨XML很烂,而从JSON之类的东西开始。然后重复该过程。
Christopher Painter 2015年

14

对旧的常见问题的新的改进的答案...

何时在XML中转义双引号

双引号(")可能会出现但没有转义

  • 在XML文本内容中:

    <NoEscapeNeeded>He said, "Don't quote me."</NoEscapeNeeded>
  • 在用单引号(')分隔的XML属性中:

    <NoEscapeNeeded name='Pete "Maverick" Mitchell'/>

    注意:切换到单引号(')也不需要转义:

    <NoEscapeNeeded name="Pete 'Maverick' Mitchell"/>

双引号("必须转义

  • 在用双引号分隔的XML属性中:

    <EscapeNeeded name="Pete &quot;Maverick&quot; Mitchell"/>

底线

"必须&quot;仅在非常有限的上下文中像在XML中那样对双引号()进行转义。




2

在C ++中,您可以使用EscapeXML ATL API。这是处理特殊字符的正确方法。


1

您可以尝试使用反斜杠后跟“ u”,然后使用字符的unicode值,例如,双引号的unicode值是

“-> U + 0022

因此,如果您将其设置为android中XML文本的一部分,它将看起来像这样,

<TextView
     android:layout_width="match_parent"
     android:layout_height="match_parent"
     android:text=" \u0022 Showing double quotes \u0022 "/>

这会在TextView中产生大致这样的文本

“显示双引号”

您可以在这里找到大多数符号和字符的unicode www.unicode-table.com/cn


您可以在此处找到大多数符号和字符的unicode-unicode-table.com/en
E-max
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.