Java 如何使用JAXB解组这个XACML XML片段? 回复 A.

Java 如何使用JAXB解组这个XACML XML片段? 回复 A.,java,xml,jaxb,xacml,xacml3,Java,Xml,Jaxb,Xacml,Xacml3,请帮助我使用JAXB解组此xml。我试着这么做,但在这中间我感到困惑并犯了错误。我有一个相当大的xml文件,但是这个片段可以帮助我理解。您发送的片段实际上是一个不完整的xml片段。例如,它缺少closing元素 您发送的片段对应于XACML 3.0策略。这意味着在关闭策略之前,还应该有1个或多个规则(从技术上讲,模式允许零规则,但这没有意义) 要使用JAX-B进行编组和解编,需要使用可以找到的XACML 3.0模式。配置JAXB以基于该模式创建Java对象非常简单。您需要创建一个简单的XJB文件

请帮助我使用JAXB解组此xml。我试着这么做,但在这中间我感到困惑并犯了错误。我有一个相当大的xml文件,但是这个片段可以帮助我理解。

您发送的片段实际上是一个不完整的xml片段。例如,它缺少closing
元素

您发送的片段对应于XACML 3.0策略。这意味着在关闭策略之前,还应该有1个或多个规则(从技术上讲,模式允许零规则,但这没有意义)

要使用JAX-B进行编组和解编,需要使用可以找到的XACML 3.0模式。配置JAXB以基于该模式创建Java对象非常简单。您需要创建一个简单的XJB文件来配置编组

这就是说,考虑到有几个XACML引擎(包括开源引擎和我工作的供应商),您自己实现XACML解析器的理由是什么

干杯,
David。

顺便问一下,您的错误是什么?为了更好地理解,我已经更新了xml。请看一看。我需要做的就是缓存这个xacml策略文件中的规则。我需要提取规则+1,@Nik-下面是一个从XML模式生成模型并使用它封送/解封送XML的示例:
<Policy xmlns="urn:oasis:names:tc:xacml:3.0:core:schema:wd-17"
    PolicyId="ClientType"
    RuleCombiningAlgId="urn:oasis:names:tc:xacml:1.0:rule-combining-algorithm:first-applicable"
    Version="1.0">
<Target>
<AnyOf>
            <AllOf>
                <Match MatchId="urn:oasis:names:tc:xacml:1.0:function:string-equal">
                    <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">Reply</AttributeValue>
                    <AttributeDesignator
                        AttributeId="urn:oasis:names:tc:xacml:1.0:action:action-id"
                        Category="urn:oasis:names:tc:xacml:3.0:attribute-category:action"
                        DataType="http://www.w3.org/2001/XMLSchema#string" MustBePresent="true" />
                </Match>
            </AllOf>
        </AnyOf>
    </Target>

    <Rule Effect="Permit" RuleId="Rule_for_all">
        <Target>
            <AnyOf>
                <AllOf>
                    <Match MatchId="urn:oasis:names:tc:xacml:1.0:function:string-equal">
                        <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">A</AttributeValue>
                        <AttributeDesignator AttributeId="Reply"
                            Category="urn:oasis:names:tc:xacml:1.0:subject-category:access-subject"
                            DataType="http://www.w3.org/2001/XMLSchema#string" MustBePresent="true" />
                    </Match>
                </AllOf>
            </AnyOf>
        </Target>
    </Rule>
    <Rule Effect="deny" RuleId="Rule_deny_all" />
</Policy>