修改 xml 中特定标签的值

我有一个 xml 如下

<?xml version="1.0" encoding="ISO-8859-1"?><TXNEXP FileDate="2017-05-23" FileName="/cortex/tsd/out/OPTSKRtxnexp20170523.xml" Instcode="SKR" TotNumTxns="74330">              
    <AUTHADV>
        <LOCALDATE>2017-05-22</LOCALDATE>
        <LOCALTIME>200011</LOCALTIME>
        <PAN>336890380<PAN>
    </AUTHADV>
    <AUTHREV>
        <LOCALDATE>2017-05-22</LOCALDATE>
        <LOCALTIME>200011</LOCALTIME>
        <PAN>336890380<PAN>
    </AUTHREV>
    <FINAL>
        <LOCALDATE>2017-05-22</LOCALDATE>
        <LOCALTIME>200011</LOCALTIME>
        <PAN>336890380<PAN>
    </FINAL>
   </TXNEXP>

现在,我正在修改 PAN 标记的值并将其写回 xml,但我无法对所有 PAN 标记执行此操作。

这就是我正在做的事情。

NodeList node = doc.getElementsByTagName("TXNEXP"); 
Element emp = null;
for (int i = 0; i < node.getLength(); i++) {
  emp = (Element) node.item(i);
  Node name = emp.getElementsByTagName("PAN").item(0).getFirstChild();
          //Modifying the tag
 }

从上面的代码中,只有 AUTHADV 标签下的 PAN 被修改,其余两个值不会改变。

如何确保所有 PAN 标签都得到修改?

原子粉碎机

这不是最漂亮的解决方案,但在修复 PAN 结束标记中缺少的斜线后,这将起作用。

import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.DocumentBuilder;
import org.w3c.dom.Document;
import org.w3c.dom.NodeList;
import org.w3c.dom.Node;
import org.w3c.dom.Element;
import java.io.File;

class Extract {
    public static void main(String[] args) {

        try {
            File fXmlFile = new File("data.xml");
            DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
            DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
            Document doc = dBuilder.parse(fXmlFile);

            NodeList topNodes = doc.getElementsByTagName("TXNEXP");
            for (int i = 0; i < topNodes.getLength(); i++) {
                NodeList middleNodes = topNodes.item(i).getChildNodes();
                for (int j = 0; j < middleNodes.getLength(); j++) {
                    try {
                       NodeList theNodes = ((Element)middleNodes.item(j)).getElementsByTagName("PAN");
                       System.out.println(theNodes.item(0).getFirstChild().getNodeValue());
                        if (j == 1) {
                            // modify a value                                                                                                                                                               
                            theNodes.item(0).getFirstChild().setNodeValue("4567");
                            System.out.println(theNodes.item(0).getFirstChild().getNodeValue());
                        }

                    } catch (ClassCastException e) {}
                }
            }

        } catch (Exception e) {
            System.out.println(e);
        }

    }
}

对于稍微好一点的方法,您可以使用 XPaths。

import javax.xml.xpath.*;

class Extract {
    public static void main(String[] args) {

        try {
            File fXmlFile = new File("data.xml");
            DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
            DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
            Document doc = dBuilder.parse(fXmlFile);
            XPath xpath = XPathFactory.newInstance().newXPath();
            NodeList nodes = (NodeList)xpath.evaluate("/TXNEXP/*/PAN", doc, XPathConstants.NODESET);
            for (int n = 0; n < nodes.getLength(); n++) {
                System.out.println(nodes.item(n).getFirstChild().getNodeValue());
                if (n == 1) {
                    nodes.item(n).getFirstChild().setNodeValue("4567");
                    System.out.println(nodes.item(n).getFirstChild().getNodeValue());
                }
            }
        } catch (Exception e) {
            System.out.println(e);
        }

    }
}

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在XML文件中替换特定标签的值

来自分类Dev

解析XML文件中的特定标签

来自分类Dev

如何读取XML中的特定标签?

来自分类Dev

如何修改xml文件中的内容(特定标记内除外)

来自分类Dev

修改XML标签的文本内容

来自分类Dev

如何在Java中修改XML标签?

来自分类Dev

在目录中递归搜索所有xml文件以查找特定标签,并grep标记的值

来自分类Dev

修改android的xml属性值

来自分类Dev

修改android的xml属性值

来自分类Dev

在python中修改xml数据

来自分类Dev

在Jmeter中修改XML请求

来自分类Dev

修改存储在varchar中的xml

来自分类Dev

在Python中修改XML文件

来自分类Dev

在PHP中修改XML Prolog

来自分类Dev

从xml删除特定标签

来自分类Dev

如何从python中的xml文档中获取特定标签

来自分类Dev

如何从python中的xml文档中获取特定标签

来自分类Dev

如何使用Powershell从XML文件中删除特定标签?

来自分类Dev

使用python 2.7更新xml中的特定标签

来自分类Dev

C#-从XML文档中的特定标签获取价值

来自分类Dev

从XML文件(Java)中的特定标签解析内容

来自分类Dev

使用vbscript修改/美化XML文件或标签?

来自分类Dev

根据父标签属性修改xml属性

来自分类Dev

如何使用 Python 在 XML 中修改具有相同标签的不同值?

来自分类Dev

在Unix上修改XML文件上的值

来自分类Dev

如何在python中修改和枚举XML标签

来自分类Dev

修改Groovy中的现有xml文件

来自分类Dev

更新\修改Android中的XML文件

来自分类Dev

修改和替换xml文件中的节点