当前位置: 首页 > 面试题库 >

在Java中更改XML文件中的一个值的最佳方法是什么?

戴树
2023-03-14
问题内容

我有一个XML文件,我知道需要更改其值的节点名称。

节点名称是ipAddress。

我可以使用JDOM,获取文档,获取节点并更改值并将其写入,也可以编写XSLT文件。

代码更改值来自Java,因此我的问题是哪个选项更好?XML文件的大小可以不同。

另一个与XSLT相关的问题:是否可以编写一个XSLT文件,这样我就不会列出所有XML节点,而只是指定like if node == ipAddress,然后采用新值,以及如何从Java应用XSLT转换?

谢谢。


问题答案:

您可以使用标准的org.w3c.dom API来获取DOM。然后使用标准的javax.xml.xpath
API获取节点。然后使用javax.xml.transform API将其写回。

就像是:

import java.io.File;
import javax.xml.parsers.*;
import javax.xml.transform.*;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
import javax.xml.xpath.*;
import org.w3c.dom.*;

public class Demo {

    public static void main(String[] args) throws Exception {
        DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
        Document document = dbf.newDocumentBuilder().parse(new File("input.xml"));

        XPathFactory xpf = XPathFactory.newInstance();
        XPath xpath = xpf.newXPath();
        XPathExpression expression = xpath.compile("//A/B[C/E/text()=13]");

        Node b13Node = (Node) expression.evaluate(document, XPathConstants.NODE);
        b13Node.getParentNode().removeChild(b13Node);

        TransformerFactory tf = TransformerFactory.newInstance();
        Transformer t = tf.newTransformer();
        t.transform(new DOMSource(document), new StreamResult(System.out));
    }
}


 类似资料:
  • 问题内容: 这是一个小问题,因为我可以轻松地参加一对班做这项工作。我并不是真的想要这样做,我觉得应该有一些简单的,内置的,类似于Java的方法来返回两个值。你们最好的,最简单的方法是什么?数组?其他一些数据结构? 问题答案: 据我所知,不幸的是在Java中没有对的内置表示(我当然希望有)。就个人而言,当我编写一个项目时发现配对类经常很有用时,我会创建一个通用类(这可能是您在想的)。返回数组是一种快

  • 问题内容: 当前,我们的Java应用程序使用制表符分隔的* .cfg文件中包含的值。我们需要更改此应用程序,以使其现在使用XML文件。 为了从此文件中读取值,使用的最佳/最简单的库是什么? 问题答案: 当然,根据您的需要有很多好的解决方案。如果只是配置,则应查看Jakarta commons- configuration 和commons- digester 。 您总是可以使用获取文档的标准JDK

  • 问题内容: 我正在生成一些需要符合给我的xsd文件的xml文件。验证其符合性的最佳方法是什么? 问题答案: Java运行时库支持验证。上次我检查的是幕后的Apache Xerces解析器。你可能应该使用。 模式工厂常量是http://www.w3.org/2001/XMLSchema定义XSD 的字符串。上面的代码针对URL验证了WAR部署描述符,http://java.sun.com/xml/n

  • 问题内容: 我正在尝试编写一个应用程序的自动化测试,该测试基本上将自定义消息格式转换为XML消息并将其发送到另一端。我有一组不错的输入/输出消息对,所以我要做的就是将输入消息发送进去,并听XML消息传到另一端。 当需要将实际输出与预期输出进行比较时,我遇到了一些问题。我的第一个想法只是对预期消息和实际消息进行字符串比较。这不能很好地工作,因为我们拥有的示例数据并不总是保持一致的格式,并且常常为XM

  • 问题内容: 我有一个使用XML响应请求的服务器,我想在javascript中解析它。我真的很喜欢ActionScript XML解析器,它对我来说很容易使用。我在徘徊是否有一种非常简单/直接的方法来解析我从服务器获取的XML? 理想的用法应该是: fetchXML新的XMLParser。parser.parse访问文档。 顺便说一句,我计划使用jQuery。 问题答案: 一个普通的with 会解决

  • 很抱歉打扰你,但我无法找到一个有效的解决我的问题的方法。我想做一个MongoDB查询,让我得到与SQL查询相同的结果: