我有一个关于XML,Java使用DOM和空节点的问题。我目前正在研究一个项目,其中我抽取了一个抽象机器的XML描述符文件(用于文本解析)并解析一系列输入字符串。这些抽象机器的实际构建和解释都已经完成并且工作正常,但我遇到了一个相当有趣的XML需求。具体来说,我需要能够将一个空的InputString节点变成一个空字符串(“”),并仍然执行我的解析例程。但是,当我尝试从我的XML树中提取此空白节点时,会出现此问题。这会导致空指针异常,然后通常会发生不好的事情。这里是XML的违规片段(注意第一个元素为空):使用Java处理空节点DOM
//Get input strings to be validated
xmlElement = (Element)xmlMachine.getElementsByTagName(XML_INPUT_STRING_LIST).item(0);
xmlNodeList = xmlElement.getElementsByTagName(XML_INPUT_STRING);
for (int j = 0; j < xmlNodeList.getLength(); j++) {
//Add input string to list
if (xmlNodeList.item(j).getFirstChild().getNodeValue() != null) {
arrInputStrings.add(xmlNodeList.item(j).getFirstChild().getNodeValue());
} else {
arrInputStrings.add("");
}
}
我应该如何处理这种情况下空:
<InputStringList>
<InputString></InputString>
<InputString>000</InputString>
<InputString>111</InputString>
<InputString>01001</InputString>
<InputString>1011011</InputString>
<InputString>1011000</InputString>
<InputString>01010</InputString>
<InputString>1010101110</InputString>
</InputStringList>
我使用提取我的琴弦从列表中?我发现了很多删除空白文本节点的信息,但实际上我仍然必须将空白节点解析为空字符串。理想情况下,我想避免使用特殊字符来表示空白字符串。
预先感谢您的时间。
我明白了。所以,由于我的元素在技术上没有下面的文本节点,因此getFirstChild()会爆炸。说得通。而getTextContent()像魅力一样工作。感谢您及时的回复。 – phobos51594 2010-10-24 23:36:37