如何替换或删除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"?>

如果找到上述符号的代码

它看起来像&#195;&#175;&#194;&#187;&#194;&#191;&#060;

我的代码

             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中的spl字符

当你说"尝试验证它"时,你的意思是什么?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

  1. 创建编写器(提示:第5行)
  2. 设置不需要创建的设置。(提示:第3行和第4行)
  3. 利润