【发布时间】:2010-10-11 08:34:17
【问题描述】:
这是一些 C# 代码:
var sb = new StringBuilder();
var w = XmlWriter.Create(sb);
w.WriteStartElement("hello");
w.WriteAttributeString("target", "world ' \" !");
w.WriteEndElement();
w.Flush();
// then look at sb.ToString()
我得到一个字符串,如下所示:
<?xml version="1.0" encoding="utf-16"?><hello target="world ' " !" />
它只是转义双引号,而不是单引号。但是 XmlWriter.WriteAttributeString(String, String) 的文档说:
如果属性值包含双引号或单引号,它们是 替换为“和’分别。
我需要设置一些标志以使其按照文档所说的那样工作吗?
【问题讨论】:
-
由于它们在语义上是相同的,你能解释一下为什么这会导致你出现问题吗?
-
与旧系统的兼容性,遗憾的是。诚然,如果它和 .NET 的 XmlWriter 似乎没有重叠的错误,那将不是问题。 :P
-
所以遗留系统无法理解有效的 XML。伊克。
-
shrug 而且 .NET 的 WriteAttributeString 甚至不遵守其文档字符串的第一句。如果我只想为我必须使用的糟糕系统推卸责任,我可以整天这样做。 :-)