如何替换或删除xml中的spl字符
本文关键字:xml 删除 中的 spl 字符 何替换 替换 | 更新日期: 2023-09-27 18:27:08
在使用xmlwriter创建一个xml文件时,我认为它运行良好,但当我尝试验证它失败时,因为有spl字符(BOM)显示如下,刚刚通过论坛看到很多人建议我使用"SecurityElement.Eescape"。我不确定如何使用以及在哪里使用。有人请指导我从xml文件中删除这个spl-checter。
<?xml version="1.0" encoding="utf-8"?>
如果找到上述符号的代码
它看起来像<
我的代码
XmlWriter xmlWrite;
XmlWriterSettings settings = new XmlWriterSettings();
settings.OmitXmlDeclaration = true;
xmlWrite = XmlWriter.Create(@"c:'test.xml",settings);
xmlWrite.WriteStartElement("metadata");
xmlWrite.WriteElementString("story", story);
xmlWrite.Close();
我可以成功地删除版本,但spl字符仍然存在。我现在被卡住了。
有什么帮助吗?
这是帮助我摆脱spl-char 的答案
XmlWriter xmlWrite;
XmlWriterSettings settings = new XmlWriterSettings();
settings.Encoding = new UTF8Encoding(false);//Thanks to DaveE
settings.ConformanceLevel = ConformanceLevel.Fragment;
settings.OmitXmlDeclaration = true;
xmlWrite = XmlWriter.Create(@"c:'test.xml",settings);
当我追加时,我使用"使用(TextWriter sw=new StreamWriter(@"c:''test.xml"))来计算
XmlDocument doc = new XmlDocument();
doc.Load(@"C:'test.xml");
XmlNode newChild = doc.CreateNode(XmlNodeType.Element, "image", null);
var attribute = doc.CreateAttribute("name");
attribute.Value = nameOnly;
newChild.Attributes.Append(attribute);
XmlNode xmlElement = doc.CreateNode(XmlNodeType.Element, "width", null);
xmlElement.InnerText = widthValue[1].TrimStart();
newChild.AppendChild(xmlElement);
using (TextWriter sw = new StreamWriter(@"C:'test.xml"))
{
doc.Save(sw);
}
当你说"尝试验证它"时,你的意思是什么?XML验证器在BOM表方面不应该有任何问题。并且转义BOM将产生无效的XML。
如果您想使用XMLWriterSettings,您需要创建它,设置所需的值,然后在创建XMLWriter时使用它。XMLWriter.Settings是只读的。
XmlWriterSettings settings = new XmlWriterSettings();
settings.ConformanceLevel = ConformanceLevel.Fragment;
settings.OmitXmlDeclaration = true;
writer = XmlWriter.Create("c:'test.xml", settings);
顺便说一句,这看起来不像一个正常的BOM。有些字节是正确的,但里面有垃圾。你的系统设置了什么代码页?
编辑:将编码添加到XMLWriterSettings对象:
settings.Encoding = new UTF8Encoding(false);
"false"参数告诉编码不使用BOM表。
好吧,对于初学者来说,即使它不是只读的,你也会得到一个空引用异常,因为你直到第5行才初始化xmlWrite
。
- 创建编写器(提示:第5行)
- 设置不需要创建的设置。(提示:第3行和第4行)
- 利润