解决 XPath 评估产生过多目标节点的错误

问题描述 投票:0回答:1

我正在尝试将 xjc 生成的全大写类名更改为 CamelCase。为了实现这一点,我编写了一个 Python 脚本来生成绑定文件。这是脚本的一部分:

def generate_bindings_for_node(node_type, xpath):
    for node in root.findall(xpath, namespaces):
        name = node.get('name')
        if name:
           
            unique_xpath = f"{xpath}[@name='{name}']"
            bindings = ET.SubElement(bindings_root, 'jaxb:bindings', {
                'node': unique_xpath
            })
            ET.SubElement(bindings, node_type, {
                'name': to_camel_case(name)
            })

但是,当运行我的Python脚本来创建绑定文件时,我遇到了许多如下错误:

[错误]“.//xsd:element[@name='CONTEXT-COMPONENT-REF']”XPath 评估导致目标节点过多 (16)

这是 XSD 文件的链接[链接]这是 XSD 文件的链接

谁能帮忙解决CamelCase生成类名的问题吗?

xml xsd
1个回答
0
投票

为了消除绑定文件中的以下消息:

[错误]“.//xsd:element[@name='CONTEXT-COMPONENT-REF']”XPath 评估导致目标节点过多 (16)

您可以将

multiple
属性与以下值之一一起使用
true
/
yes
/
1

这将告诉 XJC,如果该节点针对多个 XPath,这是正常的,他可以继续。

供参考:您还可以使用具有以下值之一的

required
属性
false
/
no
/
0
这将告诉 XJC 如果 XPath 不匹配任何节点,那么这并不重要,他可以继续进行。

XJC CamelCase Plugin 将以 jakarta 形式提供时(在 jaxb-tools 4.0.1 中),最好的选择是使用此插件并删除绑定文件。

© www.soinside.com 2019 - 2024. All rights reserved.