Из документации ясно, что мне нужно использовать следующее, чтобы получить простой вывод из моего файла / схемы XML:
JAXBContext jc = JAXBContext.newInstance("PackageName");
, где PackageName - это имя моего пакета.Я посмотрел на Google немного безрезультатно, чтобы выяснить, почему я получаю эту ошибку во время выполнения:
Line:Col[2:142]:cvc-elt.1: Cannot find the declaration of element 'myconfig'.
Line:Col[2:142]:unexpected element (uri:"http://www.w3.org", local:"myconfig"). Expected elements are <{}myconfig>
Caught UnmarshalException
EDIT : Примечание: плагин заставил меняукажите название пакета.Я дал ему тот же пакет, что и все мои файлы классов приложений, так как я хотел, чтобы все классы JAXB и мое приложение были вместе.Если мой пакет PackageName
, он создает все файлы классов JAXB в PackageName.PackageName
.Затем мне пришлось переместить их из PackageName.PackageName
(который он автоматически создал) обратно в дерево, где находится мое приложение (PackageName
).Это не подходит мне. EDIT END
Вверху всех моих файлов классов происходит следующее, включая те, которые создал для меня плагин XJC JAXB для eclipse:
package PackageName;
, так почемупроисходит ли эта ошибка?
EDIT : Схема довольно большая, поэтому я не хочу вставлять все это сюда, и, следовательно, файл ObjectFactory.java
довольно большой.Начинается
package PackageName;
import javax.xml.bind.JAXBElement;
import javax.xml.bind.annotation.XmlElementDecl;
import javax.xml.bind.annotation.XmlRegistry;
import javax.xml.namespace.QName;
и заканчивается
/**
* Create an instance of {@link JAXBElement }{@code <}{@link MyConfigType }{@code >}}
*
*/
@XmlElementDecl(namespace = "", name = "myconfig")
public JAXBElement<MyConfigType> createMyconfig(MyConfigType value) {
return new JAXBElement<MyConfigType>(_Myconfig_QNAME, MyConfigType.class, null, value);
}
Так что все вполне стандартно.Верхняя часть схемы (я новичок в XML-схеме, и она была мне предоставлена):
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="unqualified" attributeFormDefault="unqualified">
, что также выглядит прямо вперед.Схема для корневого элемента такова:
<xs:complexType name="MyConfigType">
<xs:sequence>
<xs:element name="tips" type="TipType" minOccurs="0"
maxOccurs="unbounded">
<xs:key name="unique_abc_id">
<xs:selector xpath="./abc" />
<xs:field xpath="@id" />
</xs:key>
<xs:key name="unique_def_id">
<xs:selector xpath="./def" />
<xs:field xpath="@id" />
</xs:key>
</xs:element>
</xs:sequence>
<xs:attribute ref="noNamespaceschemaLocation" />
</xs:complexType>
Поставляемая конфигурация, которую я прошу проверить одновременно с запуском unmarshal:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<myconfig xmlns="http://www.w3.org" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceschemaLocation="myconfig.xsd">
<firsttag...>
Я в тупике.
РЕДАКТИРОВАТЬ КОНЕЦ