首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >转义XML文档中的特殊字符

转义XML文档中的特殊字符
EN

Stack Overflow用户
提问于 2012-04-19 14:03:44
回答 4查看 2.4K关注 0票数 0

我在网页上有一组按钮标签,我想得到一个特定的按钮标签,它的innerText是“保存”。(它没有id。)所以我有这个代码

代码语言:javascript
复制
var tags = document.getElementsByTagName("button");
for (var i = 0; i < tags.length; i++) {
    if (tags[i].innerText === 'Save') {
        tags[i].click();
        break;
    }
}

当我在chrome控制台中试用它时,它工作得非常好。但是我不能将它包含在我的jelly文件中(这是一个将被处理成html的xml标记;有点像jsp)。

问题出在for循环中的"<“运算符,它导致了这种情况

SAXParserException:“元素的内容必须由格式良好的字符数据或标记组成。”

我还学会了不对数组使用for..in循环。我能做什么?请给我一些建议。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2012-04-19 14:07:16

你解决了一个错误的问题。您的问题是“在XML中包含<字符会破坏XML”。您需要了解如何正确地包含这样的字符,而不是避免在数据中出现这样的字符。没有必要避免标准的for循环。

或者用CDATA标记(这使特殊字符( CDATA序列末尾除外)不再特殊)包装该节,或者在XML中用&lt;表示<

代码语言:javascript
复制
<![CDATA[
for (var i = 0; i < j; i++) {
    etc(i);
}
]]>

代码语言:javascript
复制
for (var i = 0; i &lt; j; i++) {
    etc(i);
}
票数 6
EN

Stack Overflow用户

发布于 2012-04-19 14:08:18

您可以使用新的Array.forEach方法进行迭代,但它仅在JavaScript 1.6中可用:

代码语言:javascript
复制
var tags = Array.prototype.slice.call(document.getElementsByTagName("button"));
tags.forEach(function (tag) {
  // ...
});

但真正的解决方案是将您的代码放入<![CDATA[]]>

代码语言:javascript
复制
<code>
<![CDATA[
var tags = document.getElementsByTagName("button");
for (var i = 0; i < tags.length; i++) {
  // ...
}
]]>
</code>
票数 2
EN

Stack Overflow用户

发布于 2012-04-19 14:08:08

代码语言:javascript
复制
var limit = tags.length;

//loop until 0 (which is false)
while(limit) {
    if (tags[tags.length-limit].innerText === 'Save') {
        tags[tags.length-limit].click();
        break;
    }
    limit--;
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10222476

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档