2010-11-24 104 views
0

当我试图在Sharepoint中打开一个页面时出现上述错误。实际上我用下面的代码:XML解析错误:不正确

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标签节点的标签打开和关闭。如何纠正这一点?

+0

sp.Append(“);有没有在上面的代码中,它没有显示在上面的代码 – Abhimanyu 2010-11-24 13:25:37

回答

1

由于这个问题是在类别名称中的一个&,所有你需要做的就是逃避它 - 有五个字符需要在XML中进行转义:

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

&的情况下,只需用&amp;替换它。

话虽如此,如果你正在编写XML你应该用一个XmlWriter而不是StringBuilder - 这将正确地逃脱字符,不会发生这种错误的:从here采取

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

代码。