2010-07-24 20 views

Respuesta

4

La clase PList de code.google.com/xmlwise parece más prometedora para mí.

+0

Si prefiere no utilizar bibliotecas de terceros, consulte mi respuesta: http://stackoverflow.com/a/11619384/974531 –

1

Here puede encontrar una clase PList para crear PList muy fácilmente.

2

No necesita ninguna biblioteca Java externa. Utilice los siguientes pasos:

  1. Cree un documento DOM vacío e independiente.

    DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); 
    DocumentBuilder builder = factory.newDocumentBuilder(); 
    DOMImplementation di = builder.getDOMImplementation(); 
    DocumentType dt = di.createDocumentType("plist", 
        "-//Apple//DTD PLIST 1.0//EN", 
        "http://www.apple.com/DTDs/PropertyList-1.0.dtd"); 
    Document doc = di.createDocument("", "plist", dt); 
    doc.setXmlStandalone(true); 
    
  2. Set plist version.

    Element root = doc.getDocumentElement(); 
    root.setAttribute("version", "1.0"); 
    
  3. Ingrese los datos.

    Element rootDict = doc.createElement("dict"); 
    root.appendChild(rootDict); 
    Element sampleKey = doc.createElement("key"); 
    sampleKey.setTextContent("foo"); 
    rootDict.appendChild(sampleKey); 
    Element sampleValue = doc.createElement("string"); 
    sampleValue.setTextContent("bar"); 
    rootDict.appendChild(sampleValue); 
    
  4. Crear un transformador.

    DOMSource domSource = new DOMSource(doc); 
    TransformerFactory tf = TransformerFactory.newInstance(); 
    Transformer t = tf.newTransformer(); 
    t.setOutputProperty(OutputKeys.ENCODING, "UTF-16"); 
    t.setOutputProperty(OutputKeys.DOCTYPE_PUBLIC, dt.getPublicId()); 
    t.setOutputProperty(OutputKeys.DOCTYPE_SYSTEM, dt.getSystemId()); 
    t.setOutputProperty(OutputKeys.INDENT, "yes"); 
    t.setOutputProperty("{http://xml.apache.org/xslt}indent-amount", "2"); 
    
  5. Escribir en archivo.

    StringWriter stringWriter = new StringWriter(); 
    StreamResult streamResult = new StreamResult(stringWriter); 
    t.transform(domSource, streamResult); 
    String xml = stringWriter.toString(); 
    System.out.println(xml); // Optionally output to standard output. 
    OutputStream stream = new FileOutputStream("example.plist"); 
    Writer writer = new OutputStreamWriter(stream, "UTF-16"); 
    writer.write(xml); 
    writer.close(); 
    

continuación, se puede leer un archivo de este tipo en Objective-C como se describe por el Property List Programming Guide.

0

Las respuestas existentes parecen complicadas para casos simples. Aquí hay una versión más corta restringida:

import java.io.File; 
import java.io.IOException; 
import java.util.Map; 
import java.util.Map.Entry; 

import org.apache.commons.io.FileUtils; 


public class PList { 

    public static String toPlist(Map<String,String> map) { 
     String s = ""; 
     s += "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"; 
     s += "<!DOCTYPE plist PUBLIC \"-//Apple Computer//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n"; 
     s += "<plist version=\"1.0\">\n"; 
     s += "<dict>\n"; 

     for(Entry<String,String> entry : map.entrySet()) { 
      s += " <key>" + entry.getKey() + "</key>\n"; 
      s += " <string>" + entry.getValue() + "</string>\n"; 
     } 

     s += "</dict>\n"; 
     s += "</plist>\n"; 
     return s; 
    } 

    public static void writePlistToFile(Map<String,String> map, File f) throws IOException { 
     FileUtils.writeStringToFile(f, toPlist(map), "utf-8"); 
    } 

}