【问题标题】:XML Parsing Error: not well-formed errorXML 解析错误:格式不正确的错误
【发布时间】:2015-04-29 23:23:54
【问题描述】:

我正在尝试将我的数据库提要数据解析为 XML,但是在客户端我不断收到此错误:

XML Parsing Error: not well-formed
Location: http://localhost:12736/Test.aspx
Line Number 7, Column 26:        

 <Publication Date>29/04/2015 09:40:53</Publication Date>
 ------------------^

我尝试将日期时间参数“ActivateDate”转换为字符串,但在“发布日期”节点上仍然出现同样的错误。我也尝试在网上寻找解决方案,但我仍然无法解决这个问题。

这是我的服务器代码供进一步参考:

        Response.Clear();
        Response.ContentType = "text/xml";
        using (XmlTextWriter xml = new XmlTextWriter(Response.OutputStream, Encoding.UTF8))
        {
            xml.Formatting = Formatting.Indented;
            xml.Indentation = 4;
            xml.WriteStartDocument();
            xml.WriteStartElement("items");

            foreach (DataRow oFeedItem in dt.Rows)
            {

               // DateTime dtt = DateTime.Parse(oFeedItem["ACTIVEDATE"].ToString());

                string dat = Convert.ToString(oFeedItem["ACTIVEDATE"].ToString()); 

               // dat.ToString("dd MMMM yyyy"); 
                xml.WriteStartElement("Article");
                xml.WriteElementString("title", oFeedItem["title"].ToString());
                xml.WriteStartElement("description");
                xml.WriteCData(oFeedItem["Body"].ToString());
                xml.WriteEndElement();
                xml.WriteElementString("categories", oFeedItem["categories"].ToString());
                xml.WriteElementString("Publication Date", dat);
                xml.WriteEndElement();
            }

            xml.WriteEndElement();
            xml.WriteEndDocument();
            xml.Flush();
            xml.Close();

            Response.End();

        }

感谢您的建议和反馈。

【问题讨论】:

  • 将 XML 插入此处会发生什么:xmlvalidation.com
  • 当 XML 格式不正确时,意味着您违反了以下规则之一: - XML 文档必须有一个根元素 - XML 元素必须有一个结束标签 - XML 标签区分大小写 - XML 元素必须正确嵌套 - 必须引用 XML 属性值
  • 感谢大家的反馈。非常感谢。

标签: c# xml xmlwriter


【解决方案1】:

XML 元素名称不能包含空格。

W3C specification 将 xml 标签声明为:

'<' Name (S Attribute)* S? '>'

其中S 是一个或多个空白字符 (#x20 | #x9 | #xD | #xA)。

因此,从本规范中可以清楚地看到,空格 (#x20) 被视为元素名称和属性列表之间的分隔符 - 因此名称本身不能包含空格。

将您的元素 Publication Date 名称更改为 Publication_Date 将有助于使您的 xml 格式正确。

xml.WriteElementString("Publication_Date", dat);

【讨论】:

  • 啊,我明白了。感谢您的反馈意见。我不知道问题的原因是如此微不足道。很抱歉浪费您的时间。谢谢。
【解决方案2】:

元素名称不能包含空格,因此请更改Publication Date 以删除空格(例如PublicationDate)。

来自w3schools,元素命名规则:

  • 元素名称区分大小写
  • 元素名称必须以字母或下划线开头
  • 元素名称不能以字母 xml 开头 (或 XML,或 Xml 等)
  • 元素名称可以包含字母、数字、 连字符、下划线和句点
  • 元素名称不能包含空格

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多