【问题标题】:XmlWriter The ':' character, hexadecimal value 0x3A, cannot be included in a nameXmlWriter ':' 字符,十六进制值 0x3A,不能包含在名称中
【发布时间】:2022-01-20 18:23:23
【问题描述】:

我正在使用 XmlWriter 并收到以下错误:

Invalid name character in 'news:news'. The ':' character, hexadecimal value 0x3A, cannot be included in a name.

有人知道是什么原因造成的吗?这是我的代码:

using (XmlWriter writer = XmlWriter.Create("moo.xml"))
            {               

                writer.WriteStartDocument();
                writer.WriteStartElement("urlset", "http://www.sitemaps.org/schemas/sitemap/0.9");
                writer.WriteAttributeString("xmlns", "news", null, "http://www.google.com/schemas/sitemap-news/0.9");


                writer.WriteStartElement("url");
                writer.WriteElementString("loc", "http://www.monkeys.co.uk");

                writer.WriteStartElement("news:news");
                writer.WriteEndElement();

                writer.WriteEndElement();



                writer.WriteEndElement();
                writer.WriteEndDocument();

            }

【问题讨论】:

    标签: c# xml xmlwriter


    【解决方案1】:

    您需要使用带有两个参数的WriteStartElement 的重载:

    writer.WriteStartElement("news", "http://www.google.com/schemas/sitemap-news/0.9");
    //               Tag   ----^       ^--- Namespace
    

    【讨论】:

    • @Funky:而不是writer.WriteStartElement("news:news");。它将产生这个标签:<news:news />。因为 URI 已经被作者称为命名空间,所以它使用为该 URI 注册的前缀。
    • @Funky:顺便说一句:您不使用 XmlDocument 或 XDocument(首选)是否有特定原因? XmlWriter 通常仅在您有 大量 数据而无法一次保存在内存中的情况下使用。
    • 不,没有什么特别的原因,我只是在教程上看到它,然后我就按照你说的那样研究 XmlDocument 和 XDocument
    • @Funky:是的,看看 XDocument。它要简单很多,尤其是在处理复杂的 XML 结构时。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-08-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多