首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C# XMLWriter +防止"/“"<”"<“

C# XMLWriter +防止"/“"<”"<“
EN

Stack Overflow用户
提问于 2010-06-11 16:42:28
回答 4查看 4.5K关注 0票数 3

我有一个xmlWriter,我想写一个包含"/“"<”">“字符的字符串(这是XML语法的一部分,破坏了XML代码)。下面是我的c#代码:

代码语言:javascript
复制
public Boolean Initialize(String path)
    {
        Boolean result = true;

            XmlWriterSettings settings = new XmlWriterSettings();
            settings.CheckCharacters = true;
            settings.Encoding = Encoding.UTF8;
            settings.Indent = true;

            xmlWriter = XmlWriter.Create(path, settings);

            xmlWriter.WriteStartDocument();
            xmlWriter.WriteStartElement("TestData");
            isInitialized = true;

        return result;
    }

public void WriteProducts(List<Product> productList)
    {
        if (isInitialized == true)
        {
            foreach (Product product in productList)
            {
                xmlWriter.WriteStartElement("Product");

                xmlWriter.WriteElementString("Id", product.ProdId);
                xmlWriter.WriteElementString("Name", product.ProdName);
                xmlWriter.WriteElementString("GroupId", product.ProdGroup);
                xmlWriter.WriteElementString("Price", product.ProdPrice.ToString((Consts.FORMATTED_PRICE)));

                xmlWriter.WriteEndElement();
            }
        }
    }

public void Close()
    {
        xmlWriter.WriteEndElement();
        xmlWriter.WriteEndDocument();
    }

应用程序运行时没有任何错误,但是如果我查看xml文件,就会发现xml是不完整的,因为当产品名包含上述字符之一时,xmlwriter将停止写入产品节点。

有没有办法解决这个问题?

EN

回答 4

Stack Overflow用户

发布于 2010-06-11 16:45:45

您可以使用WriteRaw或将内容封装在<![CDATA[ content goes here ]]>

票数 2
EN

Stack Overflow用户

发布于 2010-06-11 16:58:14

例如,如果product.ProdName可以包含这些字符,您可以这样做:

代码语言:javascript
复制
xmlWriter.WriteStartElement("Product");

xmlWriter.WriteElementString("Id", product.ProdId);

xmlWriter.WriteStartElement("Name");
xmlWriter.WriteString(product.ProdName); // or xmlWriter.WriteCData(product.ProdName);
xmlWriter.WriteEndElement();

xmlWriter.WriteElementString("GroupId", product.ProdGroup);
xmlWriter.WriteElementString("Price", product.ProdPrice.ToString((Consts.FORMATTED_PRICE)));

xmlWriter.WriteEndElement();
票数 1
EN

Stack Overflow用户

发布于 2010-06-11 16:57:35

您需要稍微重新组织一下代码,并使用WriteString写入值,因为这会对“特殊”字符进行编码:

使用http://msdn.microsoft.com/en-us/library/system.xml.xmltextwriter.writestring.aspx

当Xml被读回时(使用Xml阅读器),编码的字符将被解码。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3021391

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档