Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

XML Parsing Error - C#

My code is having an XML parsing error at line 7 position 32 and I'm not really sure why

Exact Error 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

Xml File, please note this is just a sample because I want the program to work before I begin to fill this repository

<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>

Small part of C# Code

//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]);
                }

The Messagebox.Show() is just to make sure it's getting the correct results

like image 205
Jarred Sumner Avatar asked May 01 '10 17:05

Jarred Sumner


People also ask

What causes XML parsing error?

The most common cause is encoding errors. There are several basic approaches to solving this: escaping problematic characters ( < becomes &lt; , & becomes &amp; , etc.), escaping entire blocks of text with CDATA sections, or putting an encoding declaration at the start of the feed.

What is XML parser in C?

The Oracle XML parser for C reads an XML document and uses DOM or SAX APIs to provide programmatic access to its content and structure. You can use the parser in validating or nonvalidating mode. This chapter assumes that you are familiar with the following technologies: Document Object Model (DOM).

What is an XML error?

An error is a violation of the rules in the specification. In this case, the XML parser is allowed to recover from the error and continue processing. A fatal error is any error that causes an XML document to be no longer well formed. In this case, the XML parser is not allowed to continue normal processing.


1 Answers

The ampersand has a special meaning in XML. You need to change:

Entertainment & Other

to use a character entity reference in the place of this character:

Entertainment &amp; Other

The same applies to System & Security.

like image 192
Mark Byers Avatar answered Oct 17 '22 13:10

Mark Byers