我正在转义一个字符串以匹配另一个字符串。
使用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"
不知何故,当文本进入属性时,它再次转义 & 。
有人知道为什么会发生这种情况以及如何阻止它吗?
如果 & 不在字符串中,这将起作用。
最佳答案
好吧,正如您在评论中指出的那样,在将文本存储到 属性中时,文本不会被重新转义。我认为您看到的是“.xml”访问器正在返回一些实际的 XML 标记,以便您最终得到这样的属性值。
如果您考虑标记本身,对于您的原始未转义字符串,您需要这样做才能使其成为有效的 XML:
<tag c='car's & trucks'>
换句话说,如果您不引用与号和撇号,标记将无效。您编写的代码试图将属性值更新为包含转义序列的字符串。
从 JavaScript 设置属性值时,无需转义特殊的 XML 元字符。只有当您准备将实际的 XML 标记传递给 XML 解析器时,它才重要。一旦您在 JavaScript 中弄乱了 DOM,XML 就已经被解析过了。
关于javascript - xml 添加属性转义 &,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4855868/