xml Java获取节点的标记名
我需要读取一个小xml文件,并根据一个硬编码的HashMap验证其内容,其中key=tag和value=text位于标记内。 我无法获取节点的标记名。 如果将节点转换为元素,则会出现强制转换异常
我正在使用末日课程阅读:
DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
Document doc = dBuilder.parse(xmlFile);
NodeList list = doc.getElementsByTagName("MergeOptions");
if (list.getLength() == 0)
{
//throw
}
NodeList config = list.item(0).getChildNodes();
for (int i = 0; i <= config.getLength() - 1; i++)
{
Node setting = config.item(i);
String nodeName = setting.getNodeValue();
String value = setting.getTextContent();
if (defaultMergeOptions.containsKey(nodeName) == false)
{
//throw
}
if (defaultMergeOptions.get(nodeName).equals(value))
{
//throw
}
Xml文件:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<MergeOptions>
<sometagName>false</sometagName>
</MergeOptions>
# 1 楼答案
我做了一些不同的事情
似乎有效:
# 2 楼答案
我已经试过运行你的代码,它运行得很好,没有类强制转换异常。 请注意我是如何在for循环中使用元素来获取可能的子元素的名称、值或存在性的
使用哈希映射将节点名称作为键有点棘手,因为如果XML文件有多个具有相同名称和不同值的节点名称,哈希映射将只存储一个唯一键,从而只验证一个同名节点。其他名称相同但值不同的节点将无效
# 3 楼答案
我正在帮助您完成以下代码结构。一旦看到标记名和值,就可以应用逻辑从HashMap键或值进行比较