XMLReader

De Wikijoan
Dreceres ràpides: navegació, cerca

Versió 1

És el cas mínim més senzill:

Fitxer MyXMLFile_v1

<?xml version="1.0"?>
<company>
	<employee>
		<firstname>Tom</firstname>
		<lastname>Cruise</lastname>
	</employee>
	<employee>
		<firstname>Paul</firstname>
		<lastname>Enderson</lastname>
	</employee>
	<employee>
		<firstname>George</firstname>
		<lastname>Bush</lastname>
	</employee>
</company>

Fitxer XMLReader.java:

package v1;

import java.io.File;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;

public class XMLReader {

 public static void main(String argv[]) {

  try {
  File file = new File("/home/joan/workspace/XMLReader/res/MyXMLFile_v1.xml");
  DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
  DocumentBuilder db = dbf.newDocumentBuilder();
  Document doc = db.parse(file);
  doc.getDocumentElement().normalize();
  System.out.println("Root element " + doc.getDocumentElement().getNodeName());
  NodeList nodeLst = doc.getElementsByTagName("employee");
  System.out.println("Information of all employees");

  for (int s = 0; s < nodeLst.getLength(); s++) {

    Node fstNode = nodeLst.item(s);
    
    if (fstNode.getNodeType() == Node.ELEMENT_NODE) {
  
           Element fstElmnt = (Element) fstNode;
      NodeList fstNmElmntLst = fstElmnt.getElementsByTagName("firstname");
      Element fstNmElmnt = (Element) fstNmElmntLst.item(0);
      NodeList fstNm = fstNmElmnt.getChildNodes();
      System.out.println("First Name : "  + ((Node) fstNm.item(0)).getNodeValue());
      NodeList lstNmElmntLst = fstElmnt.getElementsByTagName("lastname");
      Element lstNmElmnt = (Element) lstNmElmntLst.item(0);
      NodeList lstNm = lstNmElmnt.getChildNodes();
      System.out.println("Last Name : " + ((Node) lstNm.item(0)).getNodeValue());
    }

  }
  } catch (Exception e) {
    e.printStackTrace();
  }
 }
}

Versió 3 i 4

La v3 és un codi extret de http://www.informit.com/library/content.aspx?b=STY_XML_21days&seqNum=207 que fa precisament el que jo vull: llegeix un fitxer XML, amb elements que tenen atributs, i elements que tenen fills. A més de llegir-parsejar el fitxer, el torna a escriure. El codi original espera trobar un argument que li passem en línia de comandes. Amb el Eclipse, això es fa amb Run > Run Configurations > Argument. Tanmateix, jo modifico el codi per tal d'obrir directament el fitxer XML:

document = builder.parse("res/ch16_01.xml");

La v4 és el mateix que la v3, però ja utilitzo un fitxer amb llenguatge puppetml.


creat per Joan Quintana Compte, abril 2009 Llenguatge Java

Eines de l'usuari
Espais de noms
Variants
Accions
Navegació
Institut Jaume Balmes
Màquines recreatives
CNC
Informàtica musical
joanillo.org Planet
Eines