Ich muss in der Lage sein, eine Zeichenfolge zu serialisieren und sie dann in einer .txt- oder .xml-Datei speichern zu lassen. Ich habe die Implementierung nie benutzt, um Dateien zu lesen/schreiben, nur daran erinnern, dass ich ein relativer Anfänger bin. Außerdem muss ich wissen, wie die im Terminal auszudruckende Zeichenfolge als normale Zeichenfolge deserialisiert wird.XML-Datei (mit XStream) in das Dateisystem in Java schreiben
Antwort
Gibt es einen besonderen Grund für die Verwendung von XStream? Dies wäre sehr einfach mit etwas wie JDOM zu tun, wenn Sie nur versuchen, eine oder zwei Strings zu serialisieren.
Ie, etwas wie: Dokument doc = new Document();
Element rootEl = new Element("root");
rootEl.setText("my string");
doc.appendChild(rootEl);
XMLOutputter outputter = new XMLOutputter();
outputter.output(doc);
Einige der oben genannten Details sind wahrscheinlich falsch, aber das ist der grundlegende Fluss. Vielleicht sollten Sie eine konkretere Frage stellen, damit wir genau verstehen, welches Problem Sie haben?
Von http://www.xml.com/pub/a/2004/08/18/xstream.html:
import com.thoughtworks.xstream.XStream;
class Date {
int year;
int month;
int day;
}
public class Serialize {
public static void main(String[] args) {
XStream xstream = new XStream();
Date date = new Date();
date.year = 2004;
date.month = 8;
date.day = 15;
xstream.alias("date", Date.class);
String decl = "\n";
String xml = xstream.toXML(date);
System.out.print(decl + xml);
}
}
public class Deserialize {
public static void main(String[] args) {
XStream xstream = new XStream();
Date date = new Date();
xstream.alias("date", Date.class);
String xml = xstream.toXML(date);
System.out.print(xml);
Date newdate = (Date)xstream.fromXML(xml);
newdate.month = 12;
newdate.day = 2;
String newxml = xstream.toXML(newdate);
System.out.print("\n\n" + newxml);
}
}
können Sie dann die XML-Zeichenfolge und schreibt sie in eine Datei.
Wenn Sie es in eine TXT-Datei serialisieren können, öffnen Sie einfach einen ObjectOutputStream und nutzen Sie die eigene Serialisierungsfunktion von String für Sie.
String str = "serialize me";
String file = "file.txt";
try{
ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream(file));
out.writeObject(str);
out.close();
ObjectInputStream in = new ObjectInputStream(new FileInputStream(file));
String newString = (String) in.readObject();
assert str.equals(newString);
System.out.println("Strings are equal");
}catch(IOException ex){
ex.printStackTrace();
}catch(ClassNotFoundException ex){
ex.printStackTrace();
}
Sie könnten auch nur öffnen Sie ein Print und Siphon es auf diese Weise, dann ein BufferedReader und readline() verwenden. Wenn Sie wirklich Lust haben wollen (da es sich um eine HW-Aufgabe handelt), könnten Sie eine for-Schleife verwenden und jedes Zeichen einzeln ausdrucken. Die Verwendung von XML ist komplizierter, als Sie eine Zeichenfolge serialisieren müssen, und die Verwendung einer externen Bibliothek ist einfach übertrieben.
XStream verfügt über Funktionen zum Lesen von und Schreiben in Dateien, siehe die einfachen Beispiele (Writer.java und Reader.java) in this article.
Wenn Sie eine Textdatei erstellen XML enthält, die den Inhalt eines Objekt darstellt (und es bidirektional machen), nur verwenden JSON-lib:
class MyBean{
private String name = "json";
private int pojoId = 1;
private char[] options = new char[]{'a','f'};
private String func1 = "function(i){ return this.options[i]; }";
private JSONFunction func2 = new JSONFunction(new String[]{"i"},"return this.options[i];");
// getters & setters
...
}
JSONObject jsonObject = JSONObject.fromObject(new MyBean());
String xmlText = XMLSerializer.write(jsonObject);
Von dort schrieb nur den String in Dateien . Viel einfacher als all diese XML-APIs. Wenn Sie jedoch einer DTD oder XSD entsprechen müssen, ist dies ein schlechter Weg, da es viel freier formatiert ist und nur dem Objektlayout entspricht.
http://json-lib.sourceforge.net/usage.html
Piko
Wenn Sie Java beginnen, dann einige Zeit dauern, bis die Apache Commons Projekt zu suchen. Es gibt viele grundlegende Erweiterungen für Java, die Sie oft nutzen werden.
Ich nehme an, Sie möchten nur eine Zeichenfolge beibehalten, so dass Sie es später wieder lesen können - in diesem Fall muss es nicht unbedingt XML sein.
Um eine Zeichenfolge in eine Datei zu schreiben, siehe org.apache.commons.io.FileUtils:
FileUtils.writeStringToFile(File file,String data)
es wieder zu lesen:
FileUtils.readFileToString(File file)
Referenzen:
http://commons.apache.org/io/api-release/org/apache/commons/io/FileUtils.html
Stellen Sie sicher, dass Sie auch auf commons-lang für viele gute grundlegende Sachen schauen.
versuchen, etwas wie folgt aus:
FileOutputStream fos = null;
try {
new File(FILE_LOCATION_DIRECTORY).mkdirs();
File fileLocation = new File(FILE_LOCATION_DIRECTORY + "/" + fileName);
fos = new FileOutputStream(fileLocation);
stream.toXML(userAlertSubscription, fos);
} catch (IOException e) {
Log.error(this, "Error %s in file %s", e.getMessage(), fileName);
} finally {
IOUtils.closeQuietly(fos);
}
- 1. ASP.NET Schreiben von PDF in das Dateisystem
- 2. Serialisieren zu YAML mit XStream in Java
- 3. Problem mit System.Diagnosis.TextWriterTraceListener kein Protokoll in das Dateisystem schreiben
- 4. In-Memory-Dateisystem in Java
- 5. Java XStream - Ignorieren-Tag, das in XML existiert nicht
- 6. Customizing Serialisierung von Java-Sammlungen mit xstream
- 7. Schreiben Sie Parkett in Java
- 8. XStream in GWT Client-Seite
- 9. parse Google Geocode mit Xstream
- 10. Rückwärts Kompatibel in xstream
- 11. Image Upload in das Dateisystem in Grails
- 12. Xstream Intercepting während das Parsen von XML
- 13. lesen xstream generierte xml in .net
- 14. JNDI-Dienstanbieter für das Dateisystem
- 15. Schreiben von Ressourcen aus dem Dateisystem in Android
- 16. Java XStream - wie einige Elemente ignorieren
- 17. xstream CannotResolveClassException
- 18. Xstream serialisieren Heap-Speicherplatz
- 19. Wie verwende ich xStream, um Java-Objekte mit Listeneigenschaften auszugeben?
- 20. Xstream Objektserialisierung
- 21. schreiben Compute Spanne mit Stapeln in Java
- 22. Parsing Text und XML-Knoten mit Xstream
- 23. XStream XmlPullParserException
- 24. Serialisierung von Entitätsklassen mit Xstream
- 25. Xstream-Treiberleistung
- 26. Java erkennen Änderungen im Dateisystem
- 27. Schreiben von Datei in HDFS mit Java
- 28. mit pyspark, lesen/schreiben 2D-Bilder auf Hadoop-Dateisystem
- 29. Lesen/Schreiben Tiffs in Java
- 30. eine Blob-Datei im Dateisystem mit Cordova schreiben - Ionic
+1, ich benutze: xstream.toXML (Mything, neue Fileoutputstream (new File ("myfile.xml"))); – teejay
Verdammt, es ist 5 Jahre alt! :-) – teejay
Die Verknüpfung wurde aktualisiert, weil sie bei IBM unterbrochen wurde. – smonff