Archive Page 2
DOM gyermek elem (child element) létrehozása
Closed Published by admin február 5th, 2010 in tutorialsEbben a fejezetben a gyökér és gyermek elem létrehozásáról lesz szó a DOM fában (DOM tree). Először egy üres DOM dokumentumot készítünk, és hozzáadjuk a gyökér elemet. Utána megjegyzés majd gyermek elemet fogunk a gyökér elemhez adni. A lecke során a következő XML kódot fogjuk elkészíteni és megjeleníteni a konzolon.
<?xml version="1.0" encoding="UTF-8" ?> <root> <!-- This is comment--> <Child attribute1="The value of Attribute 1" /> </root>
A gyökér elem létrehozása:
Az előző leckében megtanultuk hogyan készítsük el a DocumentBuilder objektumot és hozzuk létre az üres DOM dokumentumot. A következő kódrészlet elkészíti az üres dokumentumot.
//Create blank DOM Document Document doc = docBuilder.newDocument();
A createElement funkciót használhatjuk a gyökér elem létrehozására, majd az appendChild metódussal fűzhetjük hozzá a létrehozott elemet a DOM dokumentumhoz.
//create the root element
Element root = doc.createElement("root");
//all it to the xml tree
doc.appendChild(root);
Megjegyzés elem hozzáadása a DOM fához:
A doc.createComment funkcióval készíthetünk megjegyzés objektumot.
//create a comment
Comment comment = doc.createComment("This is comment");
//add in the root element
root.appendChild(comment);
Gyerkmek elem hozzáadása a DOM fához:
A doc.createElement funkcióval készíthetünk gyermek elemet.
//create child element
Element childElement = doc.createElement("Child");
//Add the atribute to the child
childElement.setAttribute("attribute1","The value of Attribute 1");
root.appendChild(childElement);
A DOM fa megjelenítése a konzolon a következő kódrészlettel lehetséges:
TransformerFactory tranFactory = TransformerFactory.newInstance(); Transformer aTransformer = tranFactory.newTransformer(); Source src = new DOMSource(doc); Result dest = new StreamResult(System.out); aTransformer.transform(src, dest);
Minta, CreateDomXml.java:
import org.w3c.dom.*;
import javax.xml.parsers.*;
import javax.xml.transform.*;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
class CreateDomXml {
public static void main(String[] args) {
try{
//Create instance of DocumentBuilderFactory
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
//Get the DocumentBuilder
DocumentBuilder docBuilder = factory.newDocumentBuilder();
//Create blank DOM Document
Document doc = docBuilder.newDocument();
//create the root element
Element root = doc.createElement("root");
//add it to the xml tree
doc.appendChild(root);
//create a comment
Comment comment = doc.createComment("This is comment");
//add in the root element
root.appendChild(comment);
//create child element
Element childElement = doc.createElement("Child");
//Add the atribute to the child
childElement.setAttribute("attribute1","The value of Attribute 1");
root.appendChild(childElement);
TransformerFactory tranFactory = TransformerFactory.newInstance();
Transformer aTransformer = tranFactory.newTransformer();
Source src = new DOMSource(doc);
Result dest = new StreamResult(System.out);
aTransformer.transform(src, dest);
}
catch(Exception e) {
System.out.println(e.getMessage());
}
}
}
A következő fejezetben az XML gyökér objektum megszerzéséről lesz szó.
Ebben a fejezetben bemutatom, hogyan lehet üres DOM dokumentumot létrehozni. A JAXP (Java API for XML Processing) egy Java interfész, ami az XML dokumentumok elemzésének egy szabványos megközelítése. A JAXP-al a DocumentBuilderFactory-t fogjuk használni a DocumentBuilder osztály létrehozásához.
A DocumentBuilderFactory osztály felelős az új DOM elemzők (parsers) létrehozásáért. Általában ezt használják DOM elemzőként.
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); DocumentBuilder parser = factory.newDocumentBuilder(); //The parse function is used to parse existing xml document. Document doc = parser.parse(myInputSource);
A DocumentBuilderFactory a javax.xml.parsers.XmlDocumentParserFactory nevű rendszerváltozót használja, hogy megtalálja a betöltendő osztályt. Így az elemzőt bármikor megváltoztathatjuk:
System.setProperty("javax.xml.parsers.XmlDocumentParserFactory", "com.foo.myFactory");
A DocumentBuilder osztály példánya való üres dokumentum készítésére. Az osztály newDocument() metódusa egy üres DOM dokumentummal tér vissza.
Document doc = parser.newDocument();
Minta, CreateBlankDocument.java:
import org.w3c.dom.*;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
public class CreateBlankDocument {
public static void main(String[] args) {
System.out.println("Creating Balnk Document...");
try{
//Create instance of DocumentBuilderFactory
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
//Get the DocumentBuilder
DocumentBuilder parser = factory.newDocumentBuilder();
//Create blank DOM Document
Document doc = parser.newDocument();
}
catch(Exception e) {
System.out.println(e.getMessage());
}
System.out.println("Done...");
System.out.println("Exiting...");
}
}
A következő fejezetben a gyökér- és gyermek elemekkel fogunk foglalkozni.
Tegnap egy olyan programot kellett készítenem, amiben mindenféle időpontokkal kellett műveleteket végeznem, pl. a holnapi dátumra volt szükségem, vagy a hónap első napjára, és mind ezt Java-ban. A következő kódrészleteket a Google-val találtam, és mivel nagyon hasznos volt számomra, úgy döntöttem, hogy a blogomat újra nyitom, és megtöltöm hasznos kódrészletekkel ;-).
Dátum formázása:
SimpleDateFormat dateformat = new SimpleDateFormat("dd/MM/yyyy");
Date newDate = new Date();
String newdate = dateformat.format(newDate);
System.out.println(newdate);
Napok hozzáadása a dátumhoz:
SimpleDateFormat dateformat = new SimpleDateFormat("dd/MM/yyyy");
Calendar cal = Calendar.getInstance();
cal.add(Calendar.DATE, 1); //Adding 1 day to current date
String newdate = dateformat.format(cal.getTime());
System.out.println(newdate);
Hónapok hozzáadása a dátumhoz:
SimpleDateFormat dateformat = new SimpleDateFormat("dd/MM/yyyy");
Calendar cal = Calendar.getInstance();
cal.add(Calendar.MONTH, 1); //Adding 1 month to current date
String newdate = dateformat.format(cal.getTime());
System.out.println(newdate);
Évek hozzáadása a dátumhoz:
SimpleDateFormat dateformat = new SimpleDateFormat("dd/MM/yyyy");
Calendar cal = Calendar.getInstance();
cal.add(Calendar.YEAR, 1); //Adding 1 year to current date
String newdate = dateformat.format(cal.getTime());
System.out.println(newdate);
Évek kivonása a dátumból:
SimpleDateFormat dateformat = new SimpleDateFormat("dd/MM/yyyy");
Calendar cal = Calendar.getInstance();
cal.add(Calendar.YEAR, -1); //-1 for subtracting
String newdate = dateformat.format(cal.getTime());
System.out.println(newdate);
Hónapok kivonása a dátumból:
SimpleDateFormat dateformat = new SimpleDateFormat("dd/MM/yyyy");
Calendar cal = Calendar.getInstance();
cal.add(Calendar.MONTH, -1); //-1 for subtracting
String newdate = dateformat.format(cal.getTime());
System.out.println(newdate);
Napok kivonása a dátumból:
SimpleDateFormat dateformat = new SimpleDateFormat("dd/MM/yyyy");
Calendar cal = Calendar.getInstance();
cal.add(Calendar.DATE, -1); //-1 for subtracting
String newdate = dateformat.format(cal.getTime());
System.out.println(newdate);
Órák hozzáadása a dátumhoz:
SimpleDateFormat dateformat = new SimpleDateFormat("dd/MM/yyyy hh:mm:ss");
Calendar cal = Calendar.getInstance();
cal.add(Calendar.HOUR, 1); //Adding 1 hour to current date time
String newdate = dateformat.format(cal.getTime());
System.out.println(newdate);
Percek hozzáadása a dátumhoz:
SimpleDateFormat dateformat = new SimpleDateFormat("dd/MM/yyyy hh:mm:ss");
Calendar cal = Calendar.getInstance();
cal.add(Calendar.MINUTE, 10); //Adding 10 minute to current date time
String newdate = dateformat.format(cal.getTime());
System.out.println(newdate);
Másodpercek hozzáadása a dátumhoz:
SimpleDateFormat dateformat = new SimpleDateFormat("dd/MM/yyyy hh:mm:ss");
Calendar cal = Calendar.getInstance();
cal.add(Calendar.SECOND, 40); //Adding 40 minute to current date time
String newdate = dateformat.format(cal.getTime());
System.out.println(newdate);
Órák kivonása a dátumból:
SimpleDateFormat dateformat = new SimpleDateFormat("dd/MM/yyyy hh:mm:ss");
Calendar cal = Calendar.getInstance();
cal.add(Calendar.HOUR, -1); //Subtracting 1 hour to current date time
String newdate = dateformat.format(cal.getTime());
System.out.println(newdate);
Percek kivonása a dátumból:
SimpleDateFormat dateformat = new SimpleDateFormat("dd/MM/yyyy hh:mm:ss");
Calendar cal = Calendar.getInstance();
cal.add(Calendar.MINUTE, -10); //Subtracting 10 minute to current date time
String newdate = dateformat.format(cal.getTime());
System.out.println(newdate);
Másodpercek kivonása a dátumból:
SimpleDateFormat dateformat = new SimpleDateFormat("dd/MM/yyyy hh:mm:ss");
Calendar cal = Calendar.getInstance();
cal.add(Calendar.SECOND, -40); //Subtracting 40 minute to current date time
String newdate = dateformat.format(cal.getTime());
System.out.println(newdate);
Forrás: http://www.hiteshagrawal.com/java/date-manipulation-in-java
A Sun Microsystems arra figyelmeztet, hogy biztonsági sebezhetőség található a Sun Java Runtime Environment-ben (JRE). A bug az unpack200 névre hallgató JAR Upacking Tool-t érinti. A rosszindulatú támadó speciálisan összeállított Java archive segítségével a hibát kihasználva tetszőleges kódot injektálhat illetve hajthat végre a felhasználó számítógépén, annak jogosultságaival. Bizonyos esetekben a hiba kihasználására akár egy speciálisan preparált weboldal meglátogatásakor is sor kerülhet.
A bug a Java JDK és JRE 5 Update 17 és korábbi, illetve a 6 update 12 és korábbi verziókban található. Mind a Windows, mind a Linux, mind a Solaris verziók érintettek. A Sun megjegyezte, hogy az 1.4.2-es és 1.3.1-es verziók nem érintettek.
A felhasználók a parancssort használva megállapíthatják, hogy milyen Java verziót futtatnak. Ehhez a “java -version” parancsot kell végrehajtani. Firefox böngészőkben az “about:plugins” lap is információkkal szolgálhat. Ezen kívül megállapítható a telepített Java verziója a “Verify Java Version” weboldal meglátogatásával.
A problémás verziót futtatóknak érdemes mielőbb frissíteni a Java 5 Update 18-ra vagy a Java 6 Update 13-ra.
A részletek itt olvashatók.
Forrás: Hungarian Unix Portal
