Gir*_*iri 2 c# xml xmltextwriter
我正在使用xmlTextWriter来创建xml.
writer.WriteStartElement("book");
writer.WriteAttributeString("author", "j.k.rowling");
writer.WriteAttributeString("year", "1990");
writer.WriteString("&");
writer.WriteEndElement();
Run Code Online (Sandbox Code Playgroud)
但是现在我需要写'&'但是xmlTextWriter会自动将这个写为"&"; 那么有什么工作要做吗?
我正在通过阅读doc文件来创建xml.所以如果我读" - "然后在xml中我需要写"&ndash";所以在写它时写的是"&"ndash.
因此,例如,如果我尝试用文本编写节点good-bad,我实际上需要编写我的XML,例如<node>good–bad</node>.这是我的项目的要求.
在正确的XML文件中,&除非是转义字符,否则不能使用独立字符.因此,如果您需要包含XML节点good–bad,则必须将其编码为good&ndash;bad.没有解决方法,因为任何不同的东西都不是有效的XML.使其工作的唯一方法是将XML文件作为纯文本写入您想要的方式,但是XML解析器无法读取它,因为它不是正确的XML.
这是我建议的解决方法的代码示例(您没有指定语言,所以我用C#向您展示,但Java应该有类似的东西):
using(var sw = new StreamWriter(stream))
{
// other code to write XML-like data
sw.WriteLine("<node>good–bad</node>");
// other code to write XML-like data
}
Run Code Online (Sandbox Code Playgroud)
正如您所发现的,另一个选择是使用WriteRaw()on XmlTextWriter(在C#中)的方法将编写一个未编码的字符串,但它并没有改变它完成后它不会是一个有效的XML文件的事实.
但正如我所提到的,如果您尝试使用XML Parser读取它,它将失败,因为&ndash它不是有效的XML字符实体,因此它不是有效的XML.
– 是一个HTML字符实体,因此通常不需要在XML中转义它.
在XML语言中,&是转义字符,因此&是&的适当字符串表示.你不能只使用&字符,因为&字符具有特殊含义,因此解析器会误解单个&字符/
您将看到与<,>,"和"字符类似的行为.所有这些都在XML语言中有意义,因此如果您需要将它们表示为文档中的文本.
这里是对维基百科的XML(和HTML)中所有字符实体的引用.每个将始终转义字符和名称(表示>,<,",')
在 XML 中,&必须转义为&. 该&字符是为实体保留的,因此不允许在其他情况下使用。实体用于对 XML 中具有特殊含义的字符进行转义。
另一个读取 XML 的软件必须再次解码实体。<对于<和>对于>或其他示例,一些其他语言(如基于 XML 的 HTML)提供了更多这些语言。
| 归档时间: |
|
| 查看次数: |
13199 次 |
| 最近记录: |