2010-11-24 2 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 - это будет правильно избежать символов и такого рода ошибки не произойдет:

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

Код взят из here ,

Смежные вопросы