У сгенерированных JAXB Java-классов есть проблема с пространством имен в rootelment

У меня есть один xsd-файл, созданный, как показано ниже, без ошибок в eclipse:

<?xml version="1.0"?>
<xs:schema id="build-summaries" 
           xmlns:xs="http://www.w3.org/2001/XMLSchema" 
           elementFormDefault="qualified">
  <xs:element name="build-summaries" >
    <xs:complexType>
      <xs:choice minOccurs="0" 
                 maxOccurs="unbounded">
        <xs:element name="build">
          <xs:complexType>
            <xs:sequence>
              <xs:element name="project-name" 
                          type="xs:string" 
                          minOccurs="0" />
              <xs:element name="label"  
                          type="xs:string" 
                          minOccurs="0" />
              <xs:element name="build-date"  
                          type="xs:string"  
                          minOccurs="0" />
              <xs:element name="log-file"  
                          type="xs:string"  
                          minOccurs="0" />
              <xs:element name="label-dirty"  
                          minOccurs="0"  
                          maxOccurs="unbounded">
                <xs:complexType>
                  <xs:sequence>
                    <xs:element name="message"  
                                type="xs:string"  
                                minOccurs="0" />
                  </xs:sequence>
                </xs:complexType>
              </xs:element>
              <xs:element name="tests"  
                          minOccurs="0"  
                          maxOccurs="unbounded">
                <xs:complexType>
                  <xs:sequence>
                    <xs:element name="total"  
                                type="xs:string"  
                                minOccurs="0" />
                    <xs:element name="failed"  
                                type="xs:string"  
                                minOccurs="0" />
                    <xs:element name="error"  
                                type="xs:string"  
                                minOccurs="0" />
                    <xs:element name="clean"  
                                type="xs:string"  
                                minOccurs="0" />
                    <xs:element name="time"  
                                type="xs:string"  
                                minOccurs="0" />
                  </xs:sequence>
                </xs:complexType>
              </xs:element>
              <xs:element name="summary"  
                          minOccurs="0"  
                          maxOccurs="unbounded">
                <xs:complexType>
                  <xs:sequence>
                    <xs:element name="total-tasks"  
                                type="xs:string"  
                                minOccurs="0" />
                    <xs:element name="failures"  
                                type="xs:string"  
                                minOccurs="0" />
                    <xs:element name="status"  
                                type="xs:string"  
                                minOccurs="0" />
                  </xs:sequence>
                </xs:complexType>
              </xs:element>
              <xs:element name="families"  
                          minOccurs="0"  
                          maxOccurs="unbounded">
                <xs:complexType>
                  <xs:sequence>
                    <xs:element name="family"  
                                minOccurs="0"  
                                maxOccurs="unbounded">
                      <xs:complexType>
                        <xs:sequence>
                          <xs:element name="name"  
                                      type="xs:string"  
                                      minOccurs="0" />
                          <xs:element name="success"  
                                      type="xs:string"  
                                      minOccurs="0" />
                          <xs:element name="failure"  
                                      type="xs:string"  
                                      minOccurs="0" />
                          <xs:element name="notvalid" 
                                      type="xs:string"  
                                      minOccurs="0" />
                          <xs:element name="sar-total"  
                                      type="xs:string"  
                                      minOccurs="0" />
                          <xs:element name="sar-fails"  
                                      type="xs:string"  
                                      minOccurs="0" />
                          <xs:element name="cbuild-tasks"  
                                      type="xs:string"  
                                      minOccurs="0" />
                          <xs:element name="cbuild-fails"  
                                      type="xs:string"  
                                      minOccurs="0" />
                        </xs:sequence>
                      </xs:complexType>
                    </xs:element>
                  </xs:sequence>
                </xs:complexType>
              </xs:element>
            </xs:sequence>
          </xs:complexType>
        </xs:element>
      </xs:choice>
    </xs:complexType>
  </xs:element>
</xs:schema>

Я создал классы JAXB, используя генератор классов jjxjaxb xjc. теперь сгенерированные файлы JAXB с ошибкой в ​​корневом элементе:

"Cannot resolve XML element declaration with namespace '' and name 'build-summaries' in this context"

@XmlRootElement(name = "build-summaries")
public class BuildSummaries {

Может ли кто-нибудь помочь мне восстановить это? когда мы создаем один файл XSD, нужно ли нам создавать пространство имен?

1 ответ

Если вы хотите, чтобы элемент build-summary был в пространстве имен, то вам нужно добавить targetNamespace="http://example.com/mynamespace" в начальный тег элемента xs:schema (подставляя имя пространства имен, для которого вы хотите http://example.com/mynamespace).

Другие вопросы по тегам