在我的XML中,撇号可能出现在节点的值中:
<Root>
<Sections>
<SectionA>
<Heading>Title</Heading>
<Description>This is section 'A'</Description>
</SectionA>
</Sections>
</Root>
如果我有绑定到此XML的控件:
<asp:FormView ID="myFormView" runat="server" DataSourceID="myXmlDataSource">
<ItemTemplate>
<div>
HTML Element:
<input type="text" value='<%# XPath("text()") %>' />
</div>
<div>
Server Control:
<asp:TextBox id="myTextBox" runat="server" value='<%# XPath("text()") %>' />
</div>
</ItemTemplate>
</asp:FormView>
<asp:XmlDataSource ID="myXmlDataSource" runat="server" XPath="Root/Sections/SectionA" />
我注意到文本在asp:TextBox中正确显示,但在INPUT元素中没有。我假设这是因为服务器控件正确地逃避了撇号。为了解决这个问题,我尝试将XML中的Description节点更改为以下内容:
<Description>This is section 'A'</Description>
同样,这在asp:TextBox中正确显示,但在INPUT元素中没有显示。
我的下一次尝试是将节点的值包装在CDATA中:
<Description><![CDATA[This is section 'A']]></Description>
最后它在INPUT元素中正确显示,但现在asp:TextBox显示了两个“&amp;#3 9;”。我甚至试过“&amp; a p o s;”但结果是一样的。
在XML中使用撇号的最佳方法是什么?值可以在服务器控件或HTML元素中显示?
答案 0 :(得分:1)
这里你有一个围绕html元素的value参数的单引号:
<input type="text" value='<%# XPath("text()") %>' />
这呈现:
value='This is section 'A''
而是使用双引号:
<input type="text" value="<%# XPath("text()") %>" />
呈现:
<input type="text" value="This is section 'A'" />
答案 1 :(得分:0)
使用&amp;代替。它是XML中允许的5个实体之一。
所以你的代码看起来像是:
<Description>This is section 'A'</Description>