JAXB是否支持在不编组/解组的情况下修改现有XML文档?

我想在文档中保留注释,排序等,并使用Java界面就地编辑文档。

JAXB会这样做吗?

XMLBeans等其他工具可以做到这一点吗?

您可以将JAXB Binder用于此用例:

input.xml中

    Jane Doe  
1 A Street Any Town
555-HOME 555-CELL

演示

 import java.io.File; import javax.xml.bind.*; import javax.xml.parsers.*; import javax.xml.transform.*; import javax.xml.transform.dom.DOMSource; import javax.xml.transform.stream.StreamResult; import org.w3c.dom.*; public class BinderDemo { public static void main(String[] args) throws Exception { DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); DocumentBuilder db = dbf.newDocumentBuilder(); File xml = new File("input.xml"); Document document = db.parse(xml); JAXBContext jc = JAXBContext.newInstance(Customer.class); Binder binder = jc.createBinder(); Customer customer = (Customer) binder.unmarshal(document); customer.getAddress().setStreet("2 NEW STREET"); PhoneNumber workPhone = new PhoneNumber(); workPhone.setType("work"); workPhone.setValue("555-WORK"); customer.getPhoneNumbers().add(workPhone); binder.updateXML(customer); TransformerFactory tf = TransformerFactory.newInstance(); Transformer t = tf.newTransformer(); t.transform(new DOMSource(document), new StreamResult(System.out)); } } 

产量

    Jane Doe  
2 NEW STREET Any Town
555-HOME 555-CELL 555-WORK

了解更多信息