Em Agent install error: org.xml.sax.SAXParseException:

Last week I was installinging the OEM Agent 10.2.0.5.0 on a RedHat 5.4 x64 machine and got the following error message:

org.xml.sax.SAXParseException: : XML-20201: (Fatal Error) Expected name instead of ?.
	at oracle.xml.parser.v2.XMLError.flushErrorHandler(XMLError.java:415)
	at oracle.xml.parser.v2.XMLError.flushErrors1(XMLError.java:284)
	at oracle.xml.parser.v2.XMLReader.scanNameChars(XMLReader.java:1101)
	at oracle.xml.parser.v2.XMLReader.scanQName(XMLReader.java:1911)
	at oracle.xml.parser.v2.NonValidatingParser.parseAttr(NonValidatingParser.java:1515)
	at oracle.xml.parser.v2.NonValidatingParser.parseAttributes(NonValidatingParser.java:1465)
	at oracle.xml.parser.v2.NonValidatingParser.parseElement(NonValidatingParser.java:1304)
	at oracle.xml.parser.v2.NonValidatingParser.parseRootElement(NonValidatingParser.java:353)
	at oracle.xml.parser.v2.NonValidatingParser.parseDocument(NonValidatingParser.java:299)
	at oracle.xml.parser.v2.XMLParser.parse(XMLParser.java:213)
	at oracle.sysman.oii.oiii.OiiiInstallXMLReader.readHomes(OiiiInstallXMLReader.java:126)
	at oracle.sysman.oii.oiii.OiiiInstallInventory.readHomes(OiiiInstallInventory.java:629)
	at oracle.sysman.oii.oiii.OiiiInstallAreaControl.loadPartialInstallInv(OiiiInstallAreaControl.java:656)
	at oracle.sysman.oii.oiii.OiiiInstallAreaControl.initInstallInv(OiiiInstallAreaControl.java:701)
	at oracle.sysman.oii.oiii.OiiiInstallAreaControl.loadInstallInventory(OiiiInstallAreaControl.java:568)
	at oracle.sysman.oii.oiii.OiiiInstallAreaControl.initAreaControl(OiiiInstallAreaControl.java:1785)
	at oracle.sysman.oii.oiii.OiiiInstallAreaControl.initAreaControl(OiiiInstallAreaControl.java:1738)
	at oracle.sysman.prov.prereqs.OracleInventory.initInventorySession(OracleInventory.java:65)
	at oracle.sysman.prov.prereqs.OracleInventory.init(OracleInventory.java:44)
	at oracle.sysman.prov.prereqs.OracleInventory.(OracleInventory.java:34)
	at oracle.sysman.prov.prereqs.OracleInventory.(OracleInventory.java:28)
	at oracle.sysman.prov.prereqs.PortHandlerUtil.getBusyPorts(PortHandlerUtil.java:53)
	at oracle.sysman.prov.prereqs.PortChecks.checkPortAvailability(PortChecks.java:104)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
	at java.lang.reflect.Method.invoke(Unknown Source)
	at oracle.sysman.oip.oipc.oipcr.OipcrRulesEngine.executeRule(OipcrRulesEngine.java:325)
	at oracle.sysman.oip.oipc.oipcp.OipcpPrereqChecker.executeCheck(OipcpPrereqChecker.java:495)
	at oracle.sysman.oip.oipc.oipcp.OipcpPrereqChecker.runChecks(OipcpPrereqChecker.java:450)
	at oracle.sysman.oip.oipc.oipcp.OipcpPrereqChecker.executePrereqs(OipcpPrereqChecker.java:351)
	at oracle.sysman.oip.oipc.oipcc.OipccPreReqSession$1.run(OipccPreReqSession.java:332)
	at java.lang.Thread.run(Unknown Source)

After some searching I found that my inventory was corrupt. There are tools available to restore / recreate the inventory. Instead I removed the inventory and let the OUI recreate it, when the installation finished I added the Oracle Home of the database that was installed on this machine and everything is working as it should be.

For restoring / recreating your Oracle Inventory see: http://download.oracle.com/docs/cd/B19306_01/em.102/b16227/oui3_manage_oracle_homes.htm#CJAGHABI