2010-05-01 22 views
8

Mi código está teniendo un error de análisis XML en la línea 7 de la posición 32 y no estoy seguro de por quéanálisis XML Error - C#

error exacto Dump

5/1/2010 10:21:42 AM 
System.Xml.XmlException: An error occurred while parsing EntityName. Line 7, position 32. 
    at System.Xml.XmlTextReaderImpl.Throw(Exception e) 
    at System.Xml.XmlTextReaderImpl.Throw(String res, Int32 lineNo, Int32 linePos) 
    at System.Xml.XmlTextReaderImpl.HandleEntityReference(Boolean isInAttributeValue, EntityExpandType expandType, Int32& charRefEndPos) 
    at System.Xml.XmlTextReaderImpl.ParseAttributeValueSlow(Int32 curPos, Char quoteChar, NodeData attr) 
    at System.Xml.XmlTextReaderImpl.ParseAttributes() 
    at System.Xml.XmlTextReaderImpl.ParseElement() 
    at System.Xml.XmlTextReaderImpl.ParseElementContent() 
    at System.Xml.XmlTextReaderImpl.Read() 
    at System.Xml.XmlLoader.LoadNode(Boolean skipOverWhitespace) 
    at System.Xml.XmlLoader.LoadDocSequence(XmlDocument parentDoc) 
    at System.Xml.XmlLoader.Load(XmlDocument doc, XmlReader reader, Boolean preserveWhitespace) 
    at System.Xml.XmlDocument.Load(XmlReader reader) 
    at System.Xml.XmlDocument.Load(String filename) 
    at Lookoa.LoadingPackages.LoadingPackages_Load(Object sender, EventArgs e) in C:\Users\Administrator\Documents\Visual Studio 2010\Projects\Lookoa\Lookoa\LoadingPackages.cs:line 30 

de archivo XML, por favor esto es sólo una muestra porque quiero que el programa funcione antes de comenzar a llenar este repositorio

<repo> 
<Packages> 
    <TheFirstPackage id="00001" longname="Mozilla Firefox" appver="3.6.3" pkgver="0.01" description="Mozilla Firefox is a free and open source web browser descended from the Mozilla Application Suite and managed by Mozilla Corporation. A Net Applications statistic put Firefox at 24.52% of the recorded usage share of web browsers as of March 2010[update], making it the second most popular browser in terms of current use worldwide after Microsoft's Internet Explorer." cat="WWW" rlsdate="4/8/10" pkgloc="http://google.com"/> 
</Packages> 
<categories> 
    <WWW longname="World Wide Web" description="Software that's focus is communication or primarily uses the web for any particular reason."> </WWW> 
    <Fun longname="Entertainment & Other" description="Music Players, Video Players, Games, or anything that doesn't fit in any of the other categories."> </Fun> 
    <Work longname="Productivity" description="Application's commonly used for occupational needs or, stuff you work on"> </Work> 
    <Advanced longname="System & Security" description="Applications that protect the computer from malware, clean the computer, and other utilities."> </Advanced> 
</categories> 
</repo> 

pequeña parte del código de C#

//Loading the Package and Category lists 
       //The info from them is gonna populate the listboxes for Category and Packages 
       Repository.Load("repo.info"); 
       XmlNodeList Categories = Repository.GetElementsByTagName("categories"); 
       foreach (XmlNode Category in Categories) 
       { 
        CategoryNumber++; 
        CategoryNames[CategoryNumber] = Category.Name; 
        MessageBox.Show(CategoryNames[CategoryNumber]); 
       } 

El Messagebox.Show() es sólo para asegurarse de que está obteniendo los resultados correctos

Respuesta

18

El signo tiene un significado especial en XML. Es necesario cambiar:

Entertainment & Other 

de usar un character entity reference en el lugar de este personaje:

Entertainment &amp; Other 

Lo mismo se aplica a System & Security.

+2

y asegúrese de escapar adecuadamente cualquier otro carácter, mientras estás en ello, por si acaso un < or > se desliza en un día. – ssube

+0

... O un "apprears en algún lugar en el valor de un atributo. –

2

Tiene un carácter no válido en su xml '&'.

Actualizado: Reemplazar con &amp;