title: parse an xml string in java?
body: <p>how do you  parse xml stored in a java string object?</p>
  
  <p>Java's XMLReader only parses XML documents from a URI or inputstream. is it not possible to parse from a String containing an xml data?</p>
  
  <p>Right now I have the following:</p>
  
  <pre><code>try {
      SAXParserFactory factory = SAXParserFactory.newInstance();
      SAXParser sp = factory.newSAXParser();
      XMLReader xr = sp.getXMLReader(); 
  
      ContactListXmlHandler handler = new ContactListXmlHandler();
      xr.setContentHandler(handler);
      xr.p
  } catch (ParserConfigurationException e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
  } catch (SAXException e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
  }
  </code></pre>
  
  <p>And on my handler i have this:</p>
  
  <pre><code>public class ContactListXmlHandler extends DefaultHandler implements Resources {
  
      private List&lt;ContactName&gt; contactNameList = new ArrayList&lt;ContactName&gt;();
  
      private ContactName contactItem;
  
      private StringBuffer sb;
  
      public List&lt;ContactName&gt; getContactNameList() {
          return contactNameList;
      }
  
      @Override
      public void startDocument() throws SAXException {
          // TODO Auto-generated method stub
          super.startDocument();
  
          sb = new StringBuffer();
      }
  
      @Override
      public void startElement(String uri, String localName, String qName,
              Attributes attributes) throws SAXException {
          // TODO Auto-generated method stub
          super.startElement(uri, localName, qName, attributes);
          if(localName.equals(XML_CONTACT_NAME)){
              contactItem = new ContactName();
          }
  
          sb.setLength(0);
  
      }
  
      @Override
      public void characters(char[] ch, int start, int length){
          // TODO Auto-generated method stub
          try {
              super.characters(ch, start, length);
          } catch (SAXException e) {
              // TODO Auto-generated catch block
              e.printStackTrace();
          }
          sb.append(ch, start, length);
      }
  
      @Override
      public void endDocument() throws SAXException {
          // TODO Auto-generated method stub
          super.endDocument();
      }
  
      /**
       * where the real stuff happens
       */
      @Override
      public void endElement(String uri, String localName, String qName)
              throws SAXException {
          // TODO Auto-generated method stub
          //super.endElement(arg0, arg1, arg2);
  
          if(contactItem != null){
              if (localName.equalsIgnoreCase("title")) {
                  contactItem.setUid(sb.toString());
                  Log.d("handler", "setTitle = " + sb.toString());
  
              } else if (localName.equalsIgnoreCase("link")) {
                  contactItem.setFullName(sb.toString());
  
              } else if (localName.equalsIgnoreCase("item")){
                  Log.d("handler", "adding rss item");
                  contactNameList.add(contactItem);
              }
  
              sb.setLength(0);
          }
  }
  </code></pre>
  
  <p>Thanks in advance</p>