在Java中,我使用dom解析器解析xml。 我想知道每个元素是否需要检查元素是否存在于XML中。
例如,现在我在保存元素内的值时进行检查:
//Email
NodeList nListEmail = BuyerPartyElement.getElementsByTagName("Email");
if(nListEmail.getLength() != 0){
docOrder.replaceItemValue("BestellerEmail", nListEmail.item(0).getTextContent());
}
但这是每个元素必须的吗?因为如果1个XML中的元素不存在,那么我认为我会得到一个空错误。
任何想法?
编辑:
为了简单起见我为此创建了两种方法:
public Element getElement(NodeList nodeList, String ElementName){
if(nodeList.getLength() != 0){
return (Element) nodeList.item(0);
}else{
System.out.println("ELEMENT : " + ElementName + " NOT EXISTING IN XML");
return null;
}
}
public String getValueFromElement(Element element, String ElementName){
NodeList nodeList = element.getElementsByTagName(ElementName);
if(nodeList.getLength() != 0){
return nodeList.item(0).getTextContent();
}else{
System.out.println("ELEMENT : " + ElementName + " NOT EXISTING IN XML");
return null;
}
}
然后我会检查:
if(CXMLHandlerObj.getValueFromElement(buyerPostalAddressElement, "City") != null){
答案 0 :(得分:1)
您可以validate your XML input against XML-Schema来确保文档具有假定的结构。这将为您节省一些空检查。
我还建议您使用XPath在dom中导航。这将为您节省一些额外的支票。
如果您的代码仍然使用空检查臃肿,您可以考虑使用Java 8 Optionals
答案 1 :(得分:0)
答案很简单。
在Java语言中, 可以在访问之前检查所有可能null
的变量。
在Java语言中, 检查所有数组或列表变量的大小,然后再按索引访问它们的元素。