[java] czytanie XML

0

Witam

moglby ktos spojrzec na ponizszy kod i powiedziec mi dlaczego on nie chce dzialac

	try
	{
	DocumentBuilderFactory factory=DocumentBuilderFactory.newInstance();
	DocumentBuilder builder=factory.newDocumentBuilder();
	File f=new File("tresc.xml");
         //linia ponizej  powoduje blad "nie poprawny typ"
	Document doc=builder.parse(f);
                        
	}
	catch(ParserConfigurationException e){System.out.println(e.getMessage());}
	catch(IOException e){System.out.println(e.getMessage());}

probowalem sprostowac to rzytujac na odpowiedni typ i dodajac dodatkowa klazure
catch tak jak ponizej

Document doc=(Document)builder.parse(f); 
.....
catch(SAXException e){System.out.println(e.getMessage());}

jadnak to nic nie dalo wyskoczyl mi wyjatek ktory nie wiem co znaczy i jak go sie pozbyc

Exception in thread "main" java.lang.ClassCastException: com.sun.org.apache.xerc
es.internal.dom.DeferredDocumentImpl
        at temp.<init>(temp.java:35)
        at temp.main(temp.java:44)

z gory dziekuje

//napisałbyś łaskawie w temacie, że chodzi o Javę - M

0

Moim zdaniem najwygodniejszym sposobem wyciągania danych z pliku XML jest XPath:

import org.w3c.dom.Document;
import org.w3c.dom.NodeList;
import org.w3c.dom.Element;

import javax.xml.xpath.XPath;
import javax.xml.xpath.XPathFactory;
import javax.xml.xpath.XPathConstants;

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;

...

try
{
    XPath xpath              = XPathFactory.newInstance().newXPath();
    DocumentBuilder builder  = DocumentBuilderFactory.newInstance().newDocumentBuilder();
    Document document        = builder.parse(new java.io.File("D:\\cdcatalog.xml"));
    String query             = "/catalog/cd[price > 10]/title";

    NodeList n = (NodeList) xpath.evaluate(query, document, XPathConstants.NODESET);
    int i;
    for(i = 0; i < n.getLength(); i++)
    {
        System.out.println(n.item(i).getTextContent().trim());
    }
}
catch(org.xml.sax.SAXParseException e)
{
    System.out.println ("Blad parsowania" + ", linia " + e.getLineNumber() + ", " + e.getSystemId());
    System.out.println(" " + e.getMessage());
}
catch(Exception e)
{
    e.printStackTrace();
}

1 użytkowników online, w tym zalogowanych: 0, gości: 1