java - 如何使用 JAXB 解码此 XACML XML 片段?

标签 java xml jaxb xacml xacml3

<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>

请帮助我使用 JAXB 解码此 xml。我尝试这样做,但在这期间我感到困惑并出现错误。我有一个相当大的 xml 文件,但这个片段将帮助我理解。

最佳答案

您发送的片段实际上是一个不完整的 XML 片段。例如,它缺少结束语 </Policy>元素。

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

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

也就是说,考虑到有多个 XACML 引擎(开源和供应商,例如我工作的 Axiomatics ),您自己实现 XACML 解析器的理由是什么?

干杯, 大卫。

关于java - 如何使用 JAXB 解码此 XACML XML 片段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20605372/

相关文章:

java - JAXB 解码列表

java - 来自 APK 的源代码

java - 更改执行相同操作的字符串的符号 +(如运算符重载)

json - 使用 Julia 将(相当)简单的 XML 文件转换为 JSON

c++ - 在 C++ 中使用 tiny xml 进行 xml 解析的问题?

java - XJC [错误] "//*[local-name()=' 架构的 XPath 评估']“导致目标节点为空

java - 不使用 XmlRoot 进行解码

java - JTextField 使用不当(可能)帮助创建 GUI

java - 分形和 "java.lang.OutOfMemoryError: Java heap space"

java - java dom 中的命名空间问题