如何使用java更改XML节点的值?

大卫

我试图重置节点的值,但由于某种原因,更改没有反映出来。我通过了标签,XPATH但它没有设置我给出的值。reqXML 是 XML 文件

我的代码

public static String changeProductVersion(String reqXML) {

    try {
        DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
        Document document = null;
        DocumentBuilder builder = factory.newDocumentBuilder();
        InputSource source = new InputSource();
        source.setCharacterStream(new StringReader(reqXML));
        document = builder.parse(source);

        XPath xPath = XPathFactory.newInstance().newXPath();
        Element element = (Element) xPath.evaluate(NYPG3Constants.NY_PG3_RL, document, XPathConstants.NODE);

        if(element != null) {
            element.setTextContent("17.1.0");
            System.out.println(element.getTextContent());
        }

    } catch (Exception ex) {
        ex.printStackTrace();
    }
    return reqXML;
}

提前致谢

克雷格考菲尔德

我不得不做出一些假设和更改,因为我不知道您的 XML 文档是什么样的。但是,Element该类扩展Node并且setTextContent是 上的一个方法Node您需要更新的是第一个子节点,它通常是元素的文本值,但您应该添加一些验证以确保。然后,一旦你更新了文本值,你需要将 DOM 序列化回它来自的任何形式:

public static String changeProductVersion(String reqXML, String xpathExpression) {

    Document document = null;
    String updatedXML = null;

    try {
        DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
        DocumentBuilder builder = factory.newDocumentBuilder();
        InputSource is = new InputSource();
        is.setCharacterStream(new StringReader(reqXML));
        document = builder.parse(is);

        XPath xPath = XPathFactory.newInstance().newXPath();
        Element element = (Element) xPath
                .compile(xpathExpression)
                .evaluate(document, XPathConstants.NODE);

        if(element != null) {
            NodeList childNodes = element.getChildNodes();

            // Get the first node which should be the text value.
            // Add some validation to make sure Node == Node.TEXT_NODE.
            Node node = (Node) childNodes.item(0);
            node.setTextContent("17.1.0");
        }

        System.out.println("Updated element value: " + element.getTextContent());

        // Serialise the updated DOM
        TransformerFactory transformerFactory = TransformerFactory.newInstance();
        Transformer transformer = transformerFactory.newTransformer();
        DOMSource source = new DOMSource(document);
        StreamResult result = new StreamResult(new StringWriter());
        transformer.transform(source, result);

        updatedXML = result.getWriter().toString();

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

    System.out.println(updatedXML);
    return updatedXML;
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何使用Java获取XML节点值?

来自分类Dev

如何使用C#在xml文件中更改子节点的文本值

来自分类Dev

如何使用Java从XML文件中更改值

来自分类Dev

PHP 更改 XML 节点值

来自分类Dev

节点的 XML 代码更改值 - 显示的代码如何正确?

来自分类Dev

如何使用Java DOM创建XML节点?

来自分类Dev

如何使用Java获取XML中的节点?

来自分类Dev

如何动态更改xml节点?

来自分类Dev

使用java更改xml标签的值

来自分类Dev

如何使用XSL更改xml的值

来自分类Dev

XSLT 1.0:如何合并XML节点,然后将属性移动到子节点并更改其值

来自分类Dev

使用XSLT根据XML中的其他节点更改节点的值

来自分类Dev

节点值内的Java XML节点

来自分类Dev

节点值内的Java XML节点

来自分类Dev

xml节点中的错误更改值

来自分类Dev

更改 XML 中单个节点的值

来自分类Dev

如何在XPath中使用XML值识别节点?

来自分类Dev

如何使用SQL从以下XML中选择节点值?

来自分类Dev

如何在XPath中使用XML值识别节点?

来自分类Dev

如何使用C#更新XML中的节点值

来自分类Dev

使用 XMLSlurper 遍历文件时如何修改 XML 节点值

来自分类Dev

如何使用Linq to XML获取XML的多个相同节点的子节点的值

来自分类Dev

如何使用Ti.API.XML更改XML标签的值

来自分类Dev

如何使用XSLT根据另一个节点的内容获取XML节点的值?

来自分类Dev

如何在节点值的开头使用Perl在XML中添加新的子节点

来自分类Dev

无法弄清楚如何更改PowerShell脚本生成的XML节点值

来自分类Dev

如何使用Java中的XPath从XML提取特定节点?

来自分类Dev

如何在Java中使用其数据反转xml节点

来自分类Dev

使用<xsl:sort>根据节点值对XML进行排序,并更改元素名称问题

Related 相关文章

热门标签

归档