检查xml元素是否存在的更简单方法

时间:2017-05-03 13:24:42

标签: java xml

在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){

2 个答案:

答案 0 :(得分:1)

您可以validate your XML input against XML-Schema来确保文档具有假定的结构。这将为您节省一些空检查。

我还建议您使用XPath在dom中导航。这将为您节省一些额外的支票。

如果您的代码仍然使用空检查臃肿,您可以考虑使用Java 8 Optionals

答案 1 :(得分:0)

答案很简单。

在Java语言中, 可以在访问之前检查所有可能null的变量。

在Java语言中, 检查所有数组或列表变量的大小,然后再按索引访问它们的元素。