在XML转义撇号属性

问题描述:

试图将一些XML加载到一个文件:在XML转义撇号属性

<Custom AttributeA='' AttributeB='Bob' AttributeC='HUNTERS' COMPANY EMPLOYEES' 403B PLAN' /> 

然后当我尝试将其添加到文档:

我最终得到一个错误信息System.Xml.XmlException:'COMPANY'是一个意外的标记。预期的标记是'='。 AttributeC的值应该是:猎人的公司职员“403B计划

我试图加载XML之前替换”之前,但它代替所有的撇号的和AttributeA = ' '的同样是无效的。

编辑:是的,我会同意形成不良,但这是我必须与之合作。

+0

看到我的回答有关逃跑。 – Daniel 2011-02-06 21:56:16

+0

我有一个邪恶的第三方DLL创建了这个XML,我无法控制。这个问题或多或少受到目前为止人们告诉我的无效,在我修复(REPLACE)第三方方法之前,我将无法纠正我的情况。因为当我不能关闭/删除我自己的问题时:/ – 2011-02-06 21:59:39

您可以使用

<Custom AttributeC="HUNTERS&apos; COMPANY EMPLOYEES'&apos; 403B PLAN"/> 

<Custom AttributeC="HUNTERS' COMPANY EMPLOYEES' 403B PLAN"/> 

甚至

<Custom AttributeC='HUNTERS&apos; COMPANY EMPLOYEES&apos; 403B PLAN'/> 

这段标记有许多问题。

这不是XML。 XML使用双引号的属性(好吧,我刚刚学到单引号也没关系)。但它需要等于 - 属性名称和值之间的符号(请参阅您的最后一个属性)。另外,属性名称不能包含空格,并且必须赋予一个值,这与HTML不同。

哦,如果没有结束标记,则必须以/>结束行,而不仅仅是>

如果你想在你的属性的撇号,您可以使用转义,喜欢这里:

<gangster name="George &quot;Shotgun&quot; Ziegler"> 

或用单引号(和转义的单引号):

<ad text='I love McDonald&apos;s'> 

或者当您想在属性中使用单引号时使用双引号:

<ad text="I love McDonald's"> 
+0

我认为它是,形成不良。 – 2011-02-06 21:43:36

attri不允许空格bute名字。您必须键入这样的事情:

<Custom AttributeA='' AttributeB='Bob' AttributeC='HUNTERS&apos; COMPANY EMPLOYEES&apos; 403B PLAN'/> 

编码撇号为&apos;

<Custom AttributeA='' AttributeB='Bob' AttributeC='HUNTERS&apos; COMPANY EMPLOYEES&apos; 403B PLAN' />