title: JAVA SAX Parsing Error
body: <p>so I been asking a couple questions here today and with the help of the amazing SO community I've been able to understand the basics of SAX, as well as learn how to properly traverse a directory structure.</p>
  
  <p>Now, with my program, I can access the XML file I am looking for, but I am not sure what this error I am getting means or where I am going wrong within the code for my SAXHandler class. Could someone take a look at this and give me some feedback?</p>
  
  <p><strong>XML FILE</strong></p>
  
  <pre><code>&lt;?xml version="1.0" encoding="UTF-8" standalone="yes" ?&gt; 
  - &lt;Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships"&gt;
        &lt;Relationship Id="rId8" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/footer" Target="footer1.xml" /&gt; 
        &lt;Relationship Id="rId13" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/theme" Target="theme/theme1.xml" /&gt; 
        &lt;Relationship Id="rId3" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/settings" Target="settings.xml" /&gt; 
        &lt;Relationship Id="rId7" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/header" Target="header1.xml" /&gt; 
        &lt;Relationship Id="rId12" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/fontTable" Target="fontTable.xml" /&gt; 
        &lt;Relationship Id="rId2" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/styles" Target="styles.xml" /&gt; 
        &lt;Relationship Id="rId1" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/numbering" Target="numbering.xml" /&gt; 
        &lt;Relationship Id="rId6" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/endnotes" Target="endnotes.xml" /&gt; 
        &lt;Relationship Id="rId11" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/image" Target="media/image3.png" /&gt; 
        &lt;Relationship Id="rId5" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/footnotes" Target="footnotes.xml" /&gt; 
        &lt;Relationship Id="rId10" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/image" Target="media/image2.jpeg" /&gt; 
        &lt;Relationship Id="rId4" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/webSettings" Target="webSettings.xml" /&gt; 
        &lt;Relationship Id="rId9" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/image" Target="media/image1.jpeg" /&gt; 
  &lt;/Relationships&gt;
  </code></pre>
  
  <p><strong>Java Code</strong></p>
  
  <pre><code>import java.io.*;
  
  import javax.xml.parsers.SAXParser;
  import javax.xml.parsers.SAXParserFactory;
  
  import org.xml.sax.*;
  import org.xml.sax.helpers.*;
  
  public class XMLParser
  {   
      public static void main(String[] args) throws IOException
      {
          traverse(new File("C:/Documents and Settings/user/workspace/Intern Project/Proposals/Converted Proposals/Extracted Items"));
      }
  
       private static final class SaxHandler extends DefaultHandler 
       {
           // invoked when document-parsing is started:
           public void startDocument() throws SAXException 
           {
               System.out.println("Document processing started");
           }
  
           // notifies about finish of parsing:
           public void endDocument() throws SAXException 
           {
               System.out.println("Document processing finished");
           }
  
           // we enter to element 'qName':
           public void startElement(String uri, String localName, 
                   String qName, Attributes attrs) throws SAXException 
           {
               if(qName.equalsIgnoreCase("Relationship"))
           {
               String val = attrs.getValue("Target");
               if(val != null)
               {
                   if (val.contains("image"))
                   {
                       String id = attrs.getValue("Id");
                       System.out.println("Id: " + id + "&amp; Target: " + val);
                   }
               }
           }
           else if(qName.equalsIgnoreCase("Relationships"))
           {
               //do nothing
           }
           else 
           {
               throw new IllegalArgumentException("Element '" + 
                       qName + "' is not allowed here");
           }
           }
  
           // we leave element 'qName' without any actions:
           public void endElement(String uri, String localName, String qName)
           throws SAXException 
           {
                  // do nothing;
           }
       }
  
       private static void traverse(File directory)
       {
          //Get all files in directory
          File[] files = directory.listFiles();
          for (File file : files)
          {
             if (file.isDirectory())
             {
                //It's a directory so (recursively) traverse it
                traverse(file);
             }
             else if (file.getName().equals("document.xml.rels"))
             {
                 try 
                  {
                      System.out.println("5");
                      // creates and returns new instance of SAX-implementation:
                      SAXParserFactory factory = SAXParserFactory.newInstance();
  
                      // create SAX-parser...
                      SAXParser parser = factory.newSAXParser();
  
                      // .. define our handler:
                      SaxHandler handler = new SaxHandler();
  
                      // and parse:
                      parser.parse(file.getAbsolutePath(), handler);    
                  } 
                  catch (Exception ex) 
                  {
                      ex.printStackTrace(System.out);
                  }
              }
           }
       }
  }
  </code></pre>
  
  <p><strong>Error</strong></p>
  
  <pre><code>5
  Document processing started
  java.lang.IllegalArgumentException: Element 'Relationships' is not allowed here
      at XMLParser$SaxHandler.startElement(XMLParser.java:57)
      at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.startElement(Unknown Source)
      at com.sun.org.apache.xerces.internal.impl.dtd.XMLDTDValidator.startElement(Unknown Source)
      at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanStartElement(Unknown Source)
      at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl$ContentDriver.scanRootElementHook(Unknown Source)
      at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(Unknown Source)
      at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl$PrologDriver.next(Unknown Source)
      at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(Unknown Source)
      at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown Source)
      at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(Unknown Source)
      at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(Unknown Source)
      at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(Unknown Source)
      at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(Unknown Source)
      at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(Unknown Source)
      at javax.xml.parsers.SAXParser.parse(Unknown Source)
      at javax.xml.parsers.SAXParser.parse(Unknown Source)
      at XMLParser.traverse(XMLParser.java:96)
      at XMLParser.traverse(XMLParser.java:79)
      at XMLParser.traverse(XMLParser.java:79)
      at XMLParser.traverse(XMLParser.java:79)
      at XMLParser.main(XMLParser.java:13)
  5
  Document processing started
  java.lang.IllegalArgumentException: Element 'Relationships' is not allowed here
      at XMLParser$SaxHandler.startElement(XMLParser.java:57)
      at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.startElement(Unknown Source)
      at com.sun.org.apache.xerces.internal.impl.dtd.XMLDTDValidator.startElement(Unknown Source)
      at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanStartElement(Unknown Source)
      at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl$ContentDriver.scanRootElementHook(Unknown Source)
      at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(Unknown Source)
      at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl$PrologDriver.next(Unknown Source)
      at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(Unknown Source)
      at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown Source)
      at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(Unknown Source)
      at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(Unknown Source)
      at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(Unknown Source)
      at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(Unknown Source)
      at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(Unknown Source)
      at javax.xml.parsers.SAXParser.parse(Unknown Source)
      at javax.xml.parsers.SAXParser.parse(Unknown Source)
      at XMLParser.traverse(XMLParser.java:96)
      at XMLParser.traverse(XMLParser.java:79)
      at XMLParser.traverse(XMLParser.java:79)
      at XMLParser.traverse(XMLParser.java:79)
      at XMLParser.main(XMLParser.java:13)
  5
  Document processing started
  java.lang.IllegalArgumentException: Element 'Relationships' is not allowed here
      at XMLParser$SaxHandler.startElement(XMLParser.java:57)
      at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.startElement(Unknown Source)
      at com.sun.org.apache.xerces.internal.impl.dtd.XMLDTDValidator.startElement(Unknown Source)
      at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanStartElement(Unknown Source)
      at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl$ContentDriver.scanRootElementHook(Unknown Source)
      at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(Unknown Source)
      at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl$PrologDriver.next(Unknown Source)
      at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(Unknown Source)
      at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown Source)
      at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(Unknown Source)
      at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(Unknown Source)
      at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(Unknown Source)
      at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(Unknown Source)
      at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(Unknown Source)
      at javax.xml.parsers.SAXParser.parse(Unknown Source)
      at javax.xml.parsers.SAXParser.parse(Unknown Source)
      at XMLParser.traverse(XMLParser.java:96)
      at XMLParser.traverse(XMLParser.java:79)
      at XMLParser.traverse(XMLParser.java:79)
      at XMLParser.traverse(XMLParser.java:79)
      at XMLParser.main(XMLParser.java:13)
  5
  Document processing started
  java.lang.IllegalArgumentException: Element 'Relationships' is not allowed here
      at XMLParser$SaxHandler.startElement(XMLParser.java:57)
      at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.startElement(Unknown Source)
      at com.sun.org.apache.xerces.internal.impl.dtd.XMLDTDValidator.startElement(Unknown Source)
      at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanStartElement(Unknown Source)
      at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl$ContentDriver.scanRootElementHook(Unknown Source)
      at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(Unknown Source)
      at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl$PrologDriver.next(Unknown Source)
      at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(Unknown Source)
      at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown Source)
      at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(Unknown Source)
      at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(Unknown Source)
      at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(Unknown Source)
      at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(Unknown Source)
      at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(Unknown Source)
      at javax.xml.parsers.SAXParser.parse(Unknown Source)
      at javax.xml.parsers.SAXParser.parse(Unknown Source)
      at XMLParser.traverse(XMLParser.java:96)
      at XMLParser.traverse(XMLParser.java:79)
      at XMLParser.traverse(XMLParser.java:79)
      at XMLParser.traverse(XMLParser.java:79)
      at XMLParser.main(XMLParser.java:13)
  </code></pre>
  
  <p><strong>Working Output Thanks to Jorge M.</strong></p>
  
  <pre><code>Document processing started
  Id: rId13&amp; Target: media/image3.jpeg
  Id: rId18&amp; Target: media/image8.jpeg
  Id: rId26&amp; Target: media/image16.jpeg
  Id: rId39&amp; Target: media/image29.jpeg
  Id: rId21&amp; Target: media/image11.jpeg
  Id: rId34&amp; Target: media/image24.jpeg
  Id: rId7&amp; Target: media/image1.jpeg
  Id: rId12&amp; Target: media/image2.jpeg
  Id: rId17&amp; Target: media/image7.jpeg
  Id: rId25&amp; Target: media/image15.jpeg
  Id: rId33&amp; Target: media/image23.jpeg
  Id: rId38&amp; Target: media/image28.jpeg
  Id: rId16&amp; Target: media/image6.jpeg
  Id: rId20&amp; Target: media/image10.jpeg
  Id: rId29&amp; Target: media/image19.jpeg
  Id: rId24&amp; Target: media/image14.jpeg
  Id: rId32&amp; Target: media/image22.jpeg
  Id: rId37&amp; Target: media/image27.jpeg
  Id: rId15&amp; Target: media/image5.jpeg
  Id: rId23&amp; Target: media/image13.jpeg
  Id: rId28&amp; Target: media/image18.jpeg
  Id: rId36&amp; Target: media/image26.jpeg
  Id: rId19&amp; Target: media/image9.jpeg
  Id: rId31&amp; Target: media/image21.jpeg
  Id: rId14&amp; Target: media/image4.jpeg
  Id: rId22&amp; Target: media/image12.jpeg
  Id: rId27&amp; Target: media/image17.jpeg
  Id: rId30&amp; Target: media/image20.jpeg
  Id: rId35&amp; Target: media/image25.jpeg
  Document processing finished
  Document processing started
  Id: rId11&amp; Target: media/image2.png
  Id: rId9&amp; Target: media/image1.jpeg
  Document processing finished
  Document processing started
  Id: rId11&amp; Target: media/image3.png
  Id: rId10&amp; Target: media/image2.jpeg
  Id: rId9&amp; Target: media/image1.jpeg
  Document processing finished
  Document processing started
  Id: rId8&amp; Target: media/image2.jpeg
  Id: rId13&amp; Target: media/image5.jpeg
  Id: rId7&amp; Target: media/image1.jpeg
  Id: rId12&amp; Target: media/image4.jpeg
  Id: rId17&amp; Target: media/image8.png
  Id: rId15&amp; Target: media/image7.jpeg
  Id: rId9&amp; Target: media/image3.jpeg
  Id: rId14&amp; Target: media/image6.jpeg
  Document processing finished
  </code></pre>
  
  <p>Thank you in advance for any help!</p>