tutorial español java xml

java - español - itext html to pdf



La forma más sencilla de consultar XML en Java (9)

@Los comentarios de esta respuesta :

Puedes crear un método para hacerlo más simple

String xml = "<resp><status>good</status><msg>hi</msg></resp>"; System.out.printf("satus= %s/n", getValue("/resp/status", xml ) );

La implementación:

public String getValue( String path, String xml ) { return XPathFactory .newInstance() .newXPath() .evaluate( path , new InputSource( new StringReader(xml))); }

Tengo pequeñas cadenas con XML, como:

String myxml = "<resp><status>good</status><msg>hi</msg></resp>";

Que quiero consultar para obtener su contenido.

¿Cuál sería la forma más sencilla de hacer esto?


Aquí hay un ejemplo de cómo hacer eso con XOM :

String myxml = "<resp><status>good</status><msg>hi</msg></resp>"; Document document = new Builder().build(myxml, "test.xml"); Nodes nodes = document.query("/resp/status"); System.out.println(nodes.get(0).getValue());

Me gusta XOM más que dom4j por su simplicidad y corrección . XOM no le permitirá crear XML no válido incluso si desea ;-) (por ejemplo, con caracteres ilegales en datos de caracteres)


Aquí hay un fragmento de código de consulta de su XML con VTD-XML

import com.ximpleware.*; public class simpleQuery { public static void main(String[] s) throws Exception{ String myXML="<resp><status>good</status><msg>hi</msg></resp>"; VTDGen vg = new VTDGen(); vg.setDoc(myXML.getBytes()); vg.parse(false); VTDNav vn = vg.getNav(); AutoPilot ap = new AutoPilot(vn); ap.selectXPath("/resp/status"); int i = ap.evalXPath(); if (i!=-1) System.out.println(" result ==>"+vn.toString(i)); } }


Después de que haya terminado con formas sencillas de consultar XML en java. Mira a XOM.



Puedes usar Jerry para consultar XML similar a jQuery.

jerry(myxml).$("status")


Usando dom4j , similar a la solución de McDowell :

String myxml = "<resp><status>good</status><msg>hi</msg></resp>"; Document document = new SAXReader().read(new StringReader(myxml)); String status = document.valueOf("/resp/msg"); System.out.println("status = " + status);

El manejo de XML es un poco más simple usando dom4j. Y exist muchas otras bibliotecas XML comparables. Las alternativas a dom4j se discuten aquí .


convierte esta cadena en un objeto DOM y visita los nodos:

Document dom= DocumentBuilderFactory().newDocumentBuilder().parse(new InputSource(new StringReader(myxml))); Element root= dom.getDocumentElement(); for(Node n=root.getFirstChild();n!=null;n=n.getNextSibling()) { System.err.prinlnt("Current node is:"+n); }


XPath usando Java 1.5 y superior, sin dependencias externas:

String xml = "<resp><status>good</status><msg>hi</msg></resp>"; XPathFactory xpathFactory = XPathFactory.newInstance(); XPath xpath = xpathFactory.newXPath(); InputSource source = new InputSource(new StringReader(xml)); String status = xpath.evaluate("/resp/status", source); System.out.println("satus=" + status);