gpt4 book ai didi

java - 循环遍历所有节点并更新Java中的值

转载 作者:太空宇宙 更新时间:2023-11-04 08:17:30 24 4
gpt4 key购买 nike

我在尝试循环遍历 XML 字符串中的所有节点然后更新值时遇到了一些问题。请注意,我对 Java 还很陌生。

我的目标是遍历每个元素和属性,然后对每个值运行正则表达式,以确保字段仅包含预定义的字符集。如果该字段包含不需要的字符,那么这些字符将被删除并更新该字段。

我的做法可能完全错误,但在尝试编辑 child 的 child 时会出现问题,请参阅下面的代码。

protected NodeList checkXML(Node node, String strStripCharsRegEx) {
String strNodeResult = "";
//NodeList nodeResult = null;

// do something with the current node instead of System.out
System.out.println(node.getNodeName());

strNodeResult = "";
if(node.getNodeValue() != null && node.getNodeValue() != "")
{
for(char c : node.getNodeValue().toCharArray()) {
if(Character.toString(c).matches(strStripCharsRegEx))
strNodeResult = strNodeResult + c;
}

if(strNodeResult != "")
{
node.setNodeValue(strNodeResult);
}
}

if(node.hasAttributes())
{
NamedNodeMap XMLAttributes = node.getAttributes();
if(XMLAttributes != null)
{
for(int attribIndex=0; attribIndex< XMLAttributes.getLength(); attribIndex++)
{
System.out.println("AttribName = " + XMLAttributes.item(attribIndex).getNodeName());
if(XMLAttributes.item(attribIndex).getNodeValue() != null)
{
if(XMLAttributes.item(attribIndex).getNodeValue() != null && XMLAttributes.item(attribIndex).getNodeValue() != "")
{
strNodeResult = "";
for(char c : XMLAttributes.item(attribIndex).getNodeValue().toCharArray())
{
if(Character.toString(c).matches(strStripCharsRegEx))
strNodeResult = strNodeResult + c;
}

if(strNodeResult != "")
{
XMLAttributes.item(attribIndex).setNodeValue(strNodeResult);
}
}

System.out.println("AttribValue = " + XMLAttributes.item(attribIndex).getNodeValue());
}
}
}
}

//Check for Children
NodeList nodeList = node.getChildNodes();

if(nodeList != null && node.hasChildNodes())
{
for (int i = 0; i < nodeList.getLength(); i++) {
Node currentNode = nodeList.item(i);
if (currentNode.getNodeType() == Node.ELEMENT_NODE) {
if(currentNode.hasChildNodes())
{
//calls this method for all the children which is Element
checkXML(currentNode, strStripCharsRegEx);
}
}
}
}

return nodeList;
}

如有任何帮助,我们将不胜感激。

谢谢

安迪

最佳答案

首先你不需要自己解析XML,有很多XML解析器可用于解析XML,你可以在解析后编辑值并再次将它们转换为XML。您可以使用 dom4j 来实现此目的。

http://dom4j.sourceforge.net/

关于java - 循环遍历所有节点并更新Java中的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10172458/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com