java - 如何使用 dom 在 XML 文件中追加元素?

标签 java xml dom

我的 XML 文件如下所示:

<Messages>
    <Contact Name="Robin" Number="8775454554">
        <Message Date="24 Jan 2012" Time="04:04">this is report1</Message>
    </Contact>
    <Contact Name="Tobin" Number="546456456">
        <Message Date="24 Jan 2012" Time="04:04">this is report2</Message>
    </Contact>
<Messages>

我需要检查 Contact 元素的“Number”属性是否等于“somenumber”,如果是,我需要在 Contact 元素中再插入一个 Message 元素。

如何使用DOM实现?使用 DOM 有什么缺点?

最佳答案

使用 DOM 的主要缺点是必须一次将整个模型加载到内存中,而不是如果您只是解析文档,则可以限制一次保存在内存中的数据。在处理非常大的 XML 文档之前,这当然不是真正的问题。

至于事物的处理方面,像下面这样的东西应该可以工作:

DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = dbf.newDocumentBuilder();
Document dom = db.parse(is);
NodeList contacts = dom.getElementsByTagName("Contact");
for(int i = 0; i < contacts.getLength(); i++) {
    Element contact = (Element) contacts.item(i);
    String contactNumber = contact.getAttribute("Number");
    if(contactNumber.equals(somenumber)) {
        Element newMessage = dom.createElement("Message");
        // Configure the message element
        contact.appendChild(newMessage);
    }
}

关于java - 如何使用 dom 在 XML 文件中追加元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8987792/

相关文章:

javascript - 如何传递不在 URL 中的多个参数?

java - Oracle AQ 出队顺序

java - Android 上丢失 UDP 套接字数据包

java - 背景淡出并转到另一个页面

javascript - 有没有正确的方法来处理 require.js 的 DOM 就绪事件? (不,domReady 插件不起作用)

javascript - 从 DOM 副本中删除元素

java - 通过手册获取 Dropbox 授权码 "copy and paste"

java - 有没有办法避免Tomcat中的卸载内存泄漏?

Android:如何将 ListView 放入 XML 中?

python - Openerp 函数字段