Java / XML请求问题

| 第一次海报在这里。我面临的问题是Java和XML。我面临的问题是,用户将向我们的系统发送一个VerifyAccount XML请求,并且根据发送的信息,我们的系统将验证该帐户,发送未注册的用户错误或无效的帐户错误。 我已经在代码上做了一些工作,我向XML模式中添加了一个元素,并且仅当在请求中在xml中解析了新创建的元素时,该元素才起作用。问题是我不想在XML请求中传递该元素,但是如果我排除该元素,则代码将无法正常工作。 Java函数是:
    private String checkPersonID(String[] loginDetails, String serviceName, Connection conn, Element service) throws SQLException, JspException
    {
        assert loginDetails != null : \"You need to set loginDetails before calling checkPersonID()\";
        assert serviceName  != null : \"You need to set serviceName before calling checkPersonID()\";

        CallableStatement stmt = conn.prepareCall( \"{call jspCheckPersonID (?)}\" )

        try
        {
            stmt.setString(1, loginDetails[INDEX_USERNAME] );
            ResultSet rs = stmt.executeQuery();

            // Make sure this person is a valid user - if so return his personID, otherwise throw appropriate Exception
            if (serviceName.equals (\"AccountVerify\") && service.getChild(\"ServiceDetail\").getChild(\"detailedErrorMesage\").getText().equals (\"true\") && !rs.next())
            {
                throw new JspException( JspException.UNREGISTERED_ACCOUNT );
            }           
            else if ( rs.getRow() != 1 || !rs.getString(\"Password\").trim().equalsIgnoreCase( loginDetails[INDEX_PASSWORD] ))
            {
                throw new JspException( JspException.INVALID_ACCOUNT );
            }

// code ommitted
XML中新添加的元素是detailErrorMessage。 XML请求应为:
<?xml version=\"1.0\" encoding=\"UTF-8\"?>
<Request xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:noNamespaceSchemaLocation=\"--\" Version=\"1.0\">
    <Identification>
        <UserID>your.address@your.company</UserID>
        <Password>password</Password>
    </Identification>
    <Service>
        <ServiceName>AccountVerify</ServiceName>

        <ServiceDetail/>
    </Service>
</Request>
这就是请求,如果将detailErrorMesage元素添加到此请求中,则该功能将按预期工作。我在这段代码中做错了什么?我已经考虑了几天,它正在努力! 任何帮助将不胜感激! 谢谢     
已邀请:
        如果我正确理解,我认为您只需要在架构中将元素标记为可选。将minOccurs设置为0并将maxOccurs设置为1以创建一个可选元素。 编辑:重新读取后,似乎如果您没有detailedErrorMessage,则您的if块将抛出NullPointerException。当您将一堆这样的方法调用链接在一起,而其中任何一个都可能为null时,您就在玩火。在检查值之前,请验证每个孩子是否存在。     

要回复问题请先登录注册