I am having a problem parsing an xml file using the following code, trying
to validate the enclosed xml files...
i keep getting the following error:
** Parsing error, line 2, uri null
Relative URI "Catalog.dtd"; can not be resolved without a document URI.
can anyone help? sorry for the length...
public boolean checkXML (String source) // source is a file name string
passed from the web
{
Document doc;
String path = "d:/orion/applications/eldan/eldan-web/xml/" + source;
if (source == null)
System.out.println("\nValidator:checkXML: source string is null");
try
{
DocumentBuilderFactory docBuilderFactory =
DocumentBuilderFactory.newInstance();
docBuilderFactory.setValidating(true);
DocumentBuilder docBuilder = docBuilderFactory.newDocumentBuilder();
Validator v = new Validator();
FileInputStream xmlStream = new FileInputStream(path);
// URL url = v.getClass().getResource(path);
// doc = docBuilder.parse (url.toString());
doc = docBuilder.parse(xmlStream);
valid = true;
System.out.println("\nxml valid");
} // end try
catch (SAXParseException err)
{
System.out.println("exception 1");
System.out.println ("** Parsing error"
+ ", line " + err.getLineNumber ()
+ ", uri " + err.getSystemId ());
System.out.println(" " + err.getMessage ());
// print stack trace as below
} // end catch 1
catch (SAXException e)
{
System.out.println("exception 2");
Exception x = e.getException ();
((x == null) ? e : x).printStackTrace ();
} // end catch 2
catch (Throwable t)
{
System.out.println("exception 3");
t.printStackTrace ();
} // end catch 3
return valid;
} // end checkXML
----------------------------------------------------------------------------
--------------------------
Catalog.xml
----------------------------------------------------------------------------
--------------------------
<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE Catolog SYSTEM "Catalog.dtd">
<Catolog>
<Product ID = "1273">
<ProductName>Air Jordan</ProductName>
<Description>The best basketball shoe in town.</Description>
<Price>140.99</Price>
</Product>
<Product ID = "1274">
<ProductName>Nike Zoom</ProductName>
<Description>An amazing crosstrainer.</Description>
<Price>75.99</Price>
</Product>
<Product ID = "1276">
<ProductName>Addidas Predator</ProductName>
<Description>The best aspect of soccer today.</Description>
<Price>219.99</Price>
</Product>
<Product ID = "1279">
<ProductName>Addidas Turbo</ProductName>
<Description>The lightweight shoe for the future.</Description>
<Price>99.99</Price>
</Product>
</Catolog>
----------------------------------------------------------------------------
--------------------------
Catalog.dtd
----------------------------------------------------------------------------
--------------------------
<!ELEMENT Catalog (Product+ )>
<!ELEMENT Product (ProductName , Description , Price )>
<!ATTLIST Product ID CDATA #REQUIRED >
<!ELEMENT ProductName (#PCDATA )>
<!ATTLIST ProductName e-dtype NMTOKEN #FIXED 'string' >
<!ELEMENT Description (#PCDATA )>
<!ATTLIST Description e-dtype NMTOKEN #FIXED 'string' >
<!ELEMENT Price (#PCDATA )>
<!ATTLIST Price e-dtype NMTOKEN #FIXED 'fixed.14.4' >
----------------------------------------------------------------------------
--------------------------
Derek Akers
Internet Application Developer
Eldan Software, Toronto
www.eldan.com