Java JAXB如何读取此XML文件?

Java JAXB如何读取此XML文件?,java,xml,jaxb,Java,Xml,Jaxb,我已经可以在unittest中使用JAXB读写XML了,但是当我试图处理实际文件时 我得到这个错误:javax.xml.bind.UnmarshalException:意外元素(uri:,local:“resources”)。预期元素为、、 该文件看起来像: <?xml version="1.0" encoding="utf-8"?> <resources xmlns:tools="http://schemas.android.com/tools" tools:locale="

我已经可以在unittest中使用JAXB读写XML了,但是当我试图处理实际文件时

我得到这个错误:
javax.xml.bind.UnmarshalException:意外元素(uri:,local:“resources”)。预期元素为、、

该文件看起来像:

<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:tools="http://schemas.android.com/tools" tools:locale="de">

    <string name="name1" translatable="false">value 1</string>
    <string name="name2" translatable="false">value 2</string>
</resources>

XmlRootElement没有更多选项来设置如何用“工具”替换名称空间“ns2”

您的
@XmlRootElement
注释告诉JAXB,与您的类相对应的根元素由名称
资源
和名称空间
http://schemas.android.com/tools
下面是更正的注释

@XmlRootElement(name="resources", namespace = "http://schemas.android.com/tools")
您的XML文档需要确保与
http://schemas.android.com/tools
名称空间用于前缀
资源
元素

<?xml version="1.0" encoding="utf-8"?>
<tools:resources xmlns:tools="http://schemas.android.com/tools" tools:locale="de">

    <string name="name1" translatable="false">value 1</string>
    <string name="name2" translatable="false">value 2</string>
</tools:resources>

感谢您的回复,测试文档是用ns2编程创建的,因为名称空间可以从代码中读取,问题是我无法分析这种格式。@stacker-我已经用一些有用的信息更新了我的答案。我收到一个退出的大输入文件,无法分析它(第一个xml片段)我已经尝试修复@XmlRootElement注释中的namespace属性,但没有成功。我只包含了代码能够写入和读取的格式,因为这可能有助于排除一些潜在问题。@stacker-请参阅更新#2
@XmlRootElement(name="resources", namespace = "http://schemas.android.com/tools")
<?xml version="1.0" encoding="utf-8"?>
<tools:resources xmlns:tools="http://schemas.android.com/tools" tools:locale="de">

    <string name="name1" translatable="false">value 1</string>
    <string name="name2" translatable="false">value 2</string>
</tools:resources>
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ns2:resources xmlns:ns2="http://schemas.android.com/tools">
    <string name="name1" translatable="false">value1</string>
    <string name="name2" translatable="true">value2</string>
    <plurals>
        <item quantity="one">%d one</item>
        <item quantity="other">%d more</item>
    </plurals>
</ns2:resources>
@XmlRootElement(name="resources")