Visualizzazione dei risultati da 1 a 2 su 2

Discussione: [java - dom]

  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    71

    [java - dom]

    Ciao a tutti ho il seguente problema nel gestire un documento xml con dom.

    Se carico il mio documento, disabilitando la validazione con xsd, e cerco uno specifico nodo con xpath non ho problemi, e lo faccio così:

    - caricamento xml:
    codice:
    DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
    factory.setValidating(false);
    Document xml = factory.newDocumentBuilder().parse(new File("mio.xml"));
    - ricerca di uno specifico nodo:
    codice:
    XPath xpath = XPathFactory.newInstance().newXPath();
    XPathExpression expr = xpath.compile("/lista-proprieta/dominio[@nome='asdfasdf']/proprieta-collection[1]");
    Object result = expr.evaluate(proprietaXML, XPathConstants.NODESET);
    NodeList nodes = (NodeList)result;
    System.out.println("Nodi trovati: " + nodes.getLength());
    In questo modo mi trova 1 nodo, perfetto.

    Se invece introduco la validazione, cambio solo il mio processo di caricamento, ma non quello di ricerca del nodo:
    - caricamento con validazione:
    codice:
    DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
    factory.setValidating(true);
    factory.setNamespaceAware(true);
    factory.setAttribute("http://java.sun.com/xml/jaxp/properties/schemaLanguage", "http://www.w3.org/2001/XMLSchema");
    factory.setAttribute("http://java.sun.com/xml/jaxp/properties/schemaSource", new File("mio.xsd"));
    DocumentBuilder builder = factory.newDocumentBuilder();
    Document proprietaXML = builder.parse(new InputSource("mio.xml"));
    Con questo caricamento quando cerco il nodo, non mi trova nulla.
    Ovviamente se valildo l'xml con l'xsd è tutto corretto.


    Io non ho proprio idea di cosa possa essere, sapreste darmi una mano?


    Grazie a tutti.

  2. #2
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    71
    Alla fine ho trovato il problema: avendo abilitato la gestione dei namespace, dovevo ricercare i nome con il giusto prefisso:

    codice:
    XPathExpression expr = xpath.compile("/mioPref:lista-proprieta/mioPref:dominio[@nome='asdfasdf']/mioPref:proprieta-collection[1]");

    Ciao

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.