1
File file = new File("E:\\file.xml");

JAXBContext jaxbContext = JAXBContext.newInstance(Customer.class);

Marshaller jaxbMarshaller = jaxbContext.createMarshaller(); 

jaxbMarshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);

jaxbMarshaller.marshal(customer, file);     

jaxbMarshaller.marshal(customer, System.out);

I am able to create file ,but next time want append into xml not create.

4

4 に答える 4

2

このようには機能しません。Customersクラスを作成する必要があります

@XmlRootElement
class Customers {
   @XmlElement(name="customer")
   List<Customer> customers;
}

顧客を追加するたびに、customers.xmlをアンマーシャルし、新しい顧客を顧客リストに追加して、顧客をcustomers.xmlにマーシャリングする必要があります。

于 2013-01-10T10:28:07.373 に答える
0

を取る のバージョンがあります。このスレッドを見て、FileWriter を作成して使用してください。marshallWriter

于 2013-01-10T10:22:37.213 に答える
0

この Java コードは、新しいノードを xml ファイルに追加するように機能します......これは DOM に基づいています

import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
import java.io.FileOutputStream;
public class writexml1 {

public static void main (String args[]) 
{

File docFile = new File("..\\jquery\\WebContent\\demo\\testing.xml");

Document doc = null;
try 
{
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = dbf.newDocumentBuilder();
doc = db.parse(docFile);
} 
catch (java.io.IOException e) 
{
System.out.println("Can't find the file");
} 
catch (Exception e) 
{
System.out.print("Problem parsing the file.");
}

Element root = doc.getDocumentElement();

System.out.println("The root element is " + root.getNodeName() + ".\n");

NodeList children = root.getChildNodes();
System.out.print("There are "+children.getLength()+" child elements.\n");
System.out.print("They are: \n");

//Print the file 
for (Node child = root.getFirstChild();child != null;child = child.getNextSibling())
{
if (child.getNodeType() == child.TEXT_NODE)
{
System.out.println("Text: "+child.getNodeValue());
} 
else if (child.getNodeType() == child.ELEMENT_NODE) 
{
System.out.println(child.getNodeName()+" = "+child.getFirstChild().getNodeValue());
}
}


//NodeList deleteElement = root.getElementsByTagName("staff");

//Node deleteNode= deleteElement.item(0);

//root.removeChild(deleteNode); 
Element staffElement = doc.createElement("staff");

Node updateText = doc.createTextNode("");
staffElement.appendChild(updateText);
//
Element firstName = doc.createElement("firstname");
String str_firstName="added firstname";
Node firstNameNode = doc.createTextNode(str_firstName);
firstName.appendChild(firstNameNode);

staffElement.appendChild(firstName);

//

Element lastName = doc.createElement("lastname");
String str_lastName="added lastname";
Node lastNameNode = doc.createTextNode(str_lastName);
lastName.appendChild(lastNameNode);

staffElement.appendChild(lastName);


//
Element nickName = doc.createElement("nickname");
String str_nickName="added nickname";
Node nickNameNode = doc.createTextNode(str_nickName);
nickName.appendChild(nickNameNode);

staffElement.appendChild(nickName);


//
Element salary = doc.createElement("salary");
String str_salary="$10,000";
Node salaryNode = doc.createTextNode(str_salary);
salary.appendChild(salaryNode);

staffElement.appendChild(salary);


//
root.appendChild(staffElement);

//Node StaffNode=(Node)updateElement;





try{
String outputURL = "..\\jquery\\WebContent\\demo\\testing.xml";

DOMSource source = new DOMSource(doc);
StreamResult result = new StreamResult(new FileOutputStream(outputURL));

TransformerFactory transFactory = TransformerFactory.newInstance();
Transformer transformer = transFactory.newTransformer();

transformer.transform(source, result);

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

}   
   }

また

JAXB API を確認してください。私が正しく理解していれば、xml は次のようになります。

<B>
    <C>11</C>
    <D>21</D>
    <E>31</E>
</B>

したがって、コードは次のようになります。

import javax.xml.bind.JAXBContext;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlAccessType;

@XmlRootElement
@XmlAccessorType(XmlAccessType.FIELD)
public class B {
    @XmlElement public String C; // sloppy, probably should be type Integer or something
    @XmlElement public String D;
    @XmlElement public String E;
}

// then, somewhere else in your code you want to serialize...
B b = new B();
b.C = "11";
b.D = "21";
b.E = "31";

JAXBContext c = JAXBContext.newInstance(B.class);

// where w is a Writer instance
c.createMarshaller().marshal(b, w);
于 2013-01-10T10:19:43.463 に答える
-1

new FileWriter(file, true)このコードは、既存のファイルにデータを追加するのに役立つと思います。

于 2013-01-10T10:21:12.667 に答える