当前位置: 首页 > 知识库问答 >
问题:

属性中的特殊字符

毛勇
2023-03-14

当序列化特殊字符(如TAB、换行和回车)作为属性值时,我遇到了一个问题。

据此,http://www.w3.org/TR/1999/WD-xml-c14n-19991109.html#charescaping,这些应编码为

var root = new DOMParser().parseFromString('<root></root>', 'text/xml').documentElement;
root.setAttribute('a', 'first\nsecond');
var serialized = new XMLSerializer().serializeToString(root);

给出一个字符串

再次加载时:

var loaded = new DOMParser().parseFromString(serialized, 'text/xml').documentElement;
loaded.getAttribute('a');

返回“first second”,换行符只丢失了一个空格。以前有人遇到过这个问题吗?任何帮助都将不胜感激。

谢谢

维克多


共有1个答案

尹钱青
2023-03-14

我遇到了这个问题,并通过编写一个函数removeInvalidCharacters(xmlNode)来解决它,该函数用于删除XML树中的无效字符(从nodevalue中)。您可以在序列化之前使用它,以确保不会获得无效字符。

你可以在同一主题的stackoverflow问题中找到remveInvalidCharacters()

您可以像这样使用removeInvalidCharacters():

var stringWithSTX = "Bad" + String.fromCharCode(2) + "News";
var xmlNode = $("<myelem/>").attr("badattr", stringWithSTX);

var serializer = new XMLSerializer();
var invalidXML = serializer.serializeToString(xmlNode);

// Now cleanse it:
removeInvalidCharacters(xmlNode);
var validXML = serializer.serializeToString(xmlNode);

我还提交了一份针对chrome的问题报告,但值得注意的是,IE9在这个部门有自己的错误,所以解决方案的修复可能需要很长时间。

 类似资料:
  • 问题内容: 如果我的对象包含以%符号开头的属性,那么如何获取其值。 如果我用 我得到一个错误 我知道我不应该在变量名中使用%,但这不是我的工作,我坚持使用它。 问题答案:

  • 我有一个集合的联系人结构如下: 因为“susan@xpto.com”上的点 如何逃脱这点? 我尝试了和但没有成功。

  • 本文向大家介绍CSS content属性特殊字符有哪些?相关面试题,主要包含被问及CSS content属性特殊字符有哪些?时的应答技巧和注意事项,需要的朋友参考一下 参考文章 来自CSDN

  • 本文向大家介绍C#中字符串的一般性和特殊性,包括了C#中字符串的一般性和特殊性的使用技巧和注意事项,需要的朋友参考一下 string 类型是C#的基元类型之一,它是一个引用类型,对应FCL中的System.String类型。string 类型和普通的引用类型相比有什么样的相同点和不同点呢? 1、字符串具有固定不变性,字符串存在于System.String命名空间下,通过反编译工具我们可以看到: 字

  • 问题内容: 故事: 当您使用解析HTML时,attribute被视为多值属性,并以特殊方式处理: 请记住,单个标签的“ class”属性可以有多个值。当您搜索与某个CSS类匹配的标签时,您将与其任何CSS类进行匹配。 另外,内建的引号用作其他树构建器类的基础,例如: 问题: 如何配置为作为通常的单值属性处理?换句话说,我不希望它专门处理并将其视为常规属性。 我尝试过的 实际上,我通过创建 自定义树

  • 问题内容: 我有一个 DOM元素: 有两个ID 和的字段..。我可以访问,没有任何问题,但是由于名称中包含句点,导致语法错误而失败。 如何访问这些属性? 问题答案: 使用方括号表示法: 这适用于任何对象,对于非标识符安全的字符以及访问你可能提前都不知道的键特别有用。