簡體   English   中英

XML解析錯誤:格式不正確

[英]XML Parsing Error: not well-formed

當我嘗試在sharepoint中打開頁面時,出現上述錯誤。 實際上我使用了以下代碼:

protected void Page_Load(object sender, EventArgs e)
{
    Response.ContentType = "text/xml";
    Response.Write(GenerateTagCloud());
    Response.End();       
}

private string GenerateTagCloud()
{
    SPWeb myweb = null;
    SPSecurity.RunWithElevatedPrivileges(delegate()
    {
        SPSite mysite1 = new SPSite(mysite.ID);
        myweb = mysite1.OpenWeb();
    });

    myweb.AllowUnsafeUpdates = true;

    SPList categories = myweb.Lists["Discussion Categories"];
    SPList discussion = myweb.Lists["Team Discussion"];

    System.Text.StringBuilder sp = new System.Text.StringBuilder();
    //System.Xml.XmlDocument doc = new System.Xml.XmlDocument();

    sp.Append("<?xml version='1.0' encoding='UTF-8'?>");
    sp.Append("<tags>");

    foreach (SPListItem category in categories.Items)
    {            
        string categoryname = category.Name;
        categoryname = categoryname.Replace(" ", "%20");
        sp.Append("<a href='" + myweb.Url + "/Pages/Home.aspx?Discussion=" + categoryname + "' style='font-size: 13.5pt'  color='0x7b7b7b'>" + category.Name + "</a>");
    }
    sp.Append("</tags>");

    myweb.AllowUnsafeUpdates = false;
    return sp.ToString();

}

但在輸出中顯示為:&lt和&gt中的標簽節點的標簽打開和關閉。 如何糾正呢?

由於問題在於其中一個類別名稱中的& ,因此您所要做的就是對其進行轉義-XML中需要轉義五個字符:

  • &- &amp;
  • <- &lt;
    • &gt;
  • “- &quot;
  • '- &apos;

對於& ,只需將其替換為&amp;

話雖如此,如果您正在編寫XML,則應該使用XmlWriter而不是StringBuilder這樣可以正確地轉義字符,並且不會發生此類錯誤:

XmlWriter writer = XmlWriter.Create(Console.Out);
writer.WriteStartElement("Foo");
writer.WriteAttributeString("Bar", "Some & value");
writer.WriteElementString("Nested", "data & data");
writer.WriteEndElement();

代碼取自此處

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM