我转义一个字符串以匹配另一个字符串。
使用javascript
function escapeCode()
{
var a = RequestIsland.XMLDocument.firstChild;
var lineItems = a.selectNodes( "//a/p" );
while ( (lineItem = lineItems.nextNode()) != null )
{
var text = lineItem.getAttribute("c");
alert(text);
text = escapeXML(text);
lineItem.setAttribute("c",text);
alert(text);
alert(lineItem.xml);
}
}使用字符串"car's & trucks“
我得到了
"car's & trucks"
"car's & trucks"
"car's & trucks"不知何故,当文本进入属性时,它再次转义了&。
有人知道为什么会发生这种情况吗?知道如何阻止它吗?
如果字符串中不包含&,则此方法有效。
发布于 2011-02-01 05:09:16
正如您在注释中注意到的,文本在存储到属性中时不会重新转义。我认为您所看到的是,".xml“访问器返回给您一些实际的XML标记,以便您最终获得这样的属性值。
如果您考虑标记本身,对于原始的未转义字符串,您需要这样做才能使其成为有效的XML:
<tag c='car's & trucks'>换句话说,如果不引用&符号和撇号,则标记将无效。您所编写的代码试图将属性值更新为包含转义序列的字符串。
在JavaScript中设置属性值时,不需要转义特殊的XML元字符。只有在准备要传递给XML解析器的实际XML标记时,它才很重要。在JavaScript中处理完DOM之后,它已经被解析了。
发布于 2011-02-01 19:38:10
转义是当DOM树被序列化为词法XML时自动发生的事情。如果在将字符串添加到DOM树之前对其进行转义,那么正如您已经发现的那样,它将以双重转义结束。
https://stackoverflow.com/questions/4855868
复制相似问题