powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Не получается распарсить xml
40 сообщений из 40, показаны все 2 страниц
Не получается распарсить xml
    #39558205
MaxLich
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте. В мою программу приходит строка в виде xml-документа. Мне нужно её парсить (превращать в нужные объекты). Использую базовый JAXB. Расставил все комментарии, написал нужный код, но почему-то он не парсит нужный объект. Пример XML:
Здравствуйте. В мою программу приходит строка в виде xml-документа. Мне нужно её парсить (превращать в нужные объекты). Использую базовый JAXB. Расставил все комментарии, написал нужный код, но почему-то он не парсит нужный объект. Пример XML:

<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<documentrequest type="staff" mode_display="employ_and_dismiss" subdiv="">
<staff>
<staffnode last_name="Бердников" first_name="Дмитрий" middle_name="" id_internal="1333771" id_external=""
tabel_id="0000000000" date_begin="01.01.1980" date_action="01.01.1980" id_subdiv_external=""
id_appoint_external="{53B582F1-ECEB-4581-BC06-19C24228B11F}"
id_graphwork_external="{3A1E523D-3936-4E20-A08A-D07ABAE5BC20}" id_subdiv_internal="1333419"
id_appoint_internal="1333397" id_graphwork_internal="1333495" date_dismiss="" path_photo="">
<identifiers/>
</staffnode>
<staffnode last_name="Богаткина" first_name="Светлана" middle_name="Владимировна" id_internal="1333772"
id_external="" tabel_id="0000000000" date_begin="01.01.1980" date_action="01.01.1980"
id_subdiv_external="" id_appoint_external="{53B582F1-ECEB-4581-BC06-19C24228B11F}"
id_graphwork_external="{3A1E523D-3936-4E20-A08A-D07ABAE5BC20}" id_subdiv_internal="1333411"
id_appoint_internal="1333397" id_graphwork_internal="1333495" date_dismiss="" path_photo="">
<identifiers>
<identifier type_identifier="family_number" id_card="7466" identifier="9236095"
identifier_transformed="9236095" date_begin_action="23.08.2016" date_end_action="01.01.3015"
prohibit="false"/>
</identifiers>

</staffnode>
<staffnode last_name="Борзунова" first_name="Лилия" middle_name="Владимировна" id_internal="1333773"
id_external="" tabel_id="0000000000" date_begin="01.01.1980" date_action="01.01.1980"
id_subdiv_external="" id_appoint_external="{14FBA985-0576-485A-8ED8-D6E81DC92BFC}"
id_graphwork_external="{3A1E523D-3936-4E20-A08A-D07ABAE5BC20}" id_subdiv_internal="1333429"
id_appoint_internal="1333389" id_graphwork_internal="1333495" date_dismiss="" path_photo="">
<identifiers/>
</staffnode>
<staffnode last_name="Бут" first_name="Наталья" middle_name="Николаевна" id_internal="1333775" id_external=""
tabel_id="0000000000" date_begin="01.01.1980" date_action="01.01.1980" id_subdiv_external=""
id_appoint_external="{53B582F1-ECEB-4581-BC06-19C24228B11F}"
id_graphwork_external="{3A1E523D-3936-4E20-A08A-D07ABAE5BC20}" id_subdiv_internal="1333409"
id_appoint_internal="1333397" id_graphwork_internal="1333495" date_dismiss="" path_photo="">
<identifiers/>
</staffnode>
</staff>
</documentrequest>


Мой код, который занимается парсингом:

//parse the response with the list of employees
public static List<Employee> parseXmlStaff(String xml) throws JAXBException {
DocumentRequest documentRequest = (DocumentRequest) parse(xml,
Employee.class, AccessCard.class,DocumentRequest.class);
return documentRequest.getStaff();
}
private static Object parse(String xml, Class...classToBeBound) throws JAXBException {
Reader reader = new StringReader(xml);

JAXBContext context = JAXBContext.newInstance(classToBeBound);
Unmarshaller unmarshaller = context.createUnmarshaller();

return unmarshaller.unmarshal(reader);
}


Классы объектов, которые парсятся:

@XmlRootElement(name = "documentrequest")
public class DocumentRequest {
private List<Employee> staff;
//------------- Getters and Setters ----------------------------
@XmlElement(name = "staffnode")
@XmlElementWrapper(name = "staff")
public List<Employee> getStaff() {
return staff;
}
public void setStaff(List<Employee> staff) {
this.staff = staff;
}

}


@XmlRootElement(name = "staffnode")
public class Employee {
private String firstName;
private String middleName;
private String lastName;
private String pathToPhoto;
private int idInternal;
private String idExternal;
private int tabelId;
private Date dateBegin;
private Date dateAction;
private String idSubdivExternal;
private String idGraphworkExternal;
private String idAppointExternal;
private int idSubdivInternal;
private int idGraphworkInternal;
private int idAppointInternal;
private Date dateDismiss;

private List<AccessCard> accessCards;

public Employee() {
}

public Employee(String firstName, String middleName, String lastName,
String pathToPhoto, int idInternal, String idExternal, int tabelId,
Date dateBegin, Date dateAction, String idSubdivExternal,
String idGraphworkExternal, String idAppointExternal, int idSubdivInternal,
int idGraphworkInternal, int idAppointInternal, Date dateDismiss) {
this.firstName = firstName;
this.middleName = middleName;
this.lastName = lastName;
this.pathToPhoto = pathToPhoto;
this.idInternal = idInternal;
this.idExternal = idExternal;
this.tabelId = tabelId;
this.dateBegin = dateBegin;
this.dateAction = dateAction;
this.idSubdivExternal = idSubdivExternal;
this.idGraphworkExternal = idGraphworkExternal;
this.idAppointExternal = idAppointExternal;
this.idSubdivInternal = idSubdivInternal;
this.idGraphworkInternal = idGraphworkInternal;
this.idAppointInternal = idAppointInternal;
this.dateDismiss = dateDismiss;
}

@XmlAttribute(name = "first_name")
public String getFirstName() {
return firstName;
}


public void setFirstName(String firstName) {
this.firstName = firstName;
}

@XmlAttribute(name = "middle_name")
public String getMiddleName() {
return middleName;
}

public void setMiddleName(String middleName) {
this.middleName = middleName;
}
//some code: getters and setters

@XmlAttribute(name = "id_appoint_internal")
public int getIdAppointInternal() {
return idAppointInternal;
}

public void setIdAppointInternal(int idAppointInternal) {
this.idAppointInternal = idAppointInternal;
}

@XmlAttribute(name = "date_dismiss")
@XmlJavaTypeAdapter(DateAdapter.class)
public Date getDateDismiss() {
return dateDismiss;
}

public void setDateDismiss(Date dateDismiss) {
this.dateDismiss = dateDismiss;
}

@XmlElementWrapper(name = "identifiers")
@XmlElement("identifier")
public List<AccessCard> getAccessCard() {
return accessCards;
}

public void setAccessCard(List<AccessCard> accessCards) {
this.accessCards = accessCards;
}
}

@XmlRootElement(name = "identifier")
public class AccessCard {
private String TypeIdentifier;
private int idCard;
private int identifier;
private int identifierTransformed;
private Date dateBegin;
private Date dateEnd;
private boolean prohibit;

@XmlAttribute(name = "type_identifier")
public String getTypeIdentifier() {
return TypeIdentifier;
}

public void setTypeIdentifier(String typeIdentifier) {
TypeIdentifier = typeIdentifier;
}

@XmlAttribute(name = "id_card")
public int getIdCard() {
return idCard;
}

public void setIdCard(int idCard) {
this.idCard = idCard;
}

@XmlAttribute(name = "identifier")
public int getIdentifier() {
return identifier;
}

public void setIdentifier(int identifier) {
this.identifier = identifier;
}

//some code
}

Проблема, что он не получает карточки доступа (тег identifier), всё остальное - получает.
...
Рейтинг: 0 / 0
Не получается распарсить xml
    #39558767
MaxLich
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Нашёл ошибку с импортом (импортировал не ту аннотацию XmlElement). Исправил. Но теперь вылетает NPE. Как раз при анмаршаллинге.
...
Рейтинг: 0 / 0
Не получается распарсить xml
    #39558798
Valery Shiskin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MaxLich,

Для начала попробуйте везде заполнить identifiers и identifier.
...
Рейтинг: 0 / 0
Не получается распарсить xml
    #39558802
MaxLich
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Valery Shiskin,
В смысле "заполнить"? В xml? Так он мне приходит именно в таком виде. Я не выбираю. У кого-то есть карта доступа, у кого-то - нет. Нужно как-то работать с этим.
...
Рейтинг: 0 / 0
Не получается распарсить xml
    #39558811
Valery Shiskin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MaxLich,

Но, как я понял, клиентский код ваш. Я когда-то с jaxb работал, забыл, но помнится, что были для аннотаций параметры nillable. Надо Вам разобраться со случаем когда коллекция тэгов пуста.
...
Рейтинг: 0 / 0
Не получается распарсить xml
    #39558813
MaxLich
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Valery Shiskin,
Попробовал в тестовом режиме дать ему xml, где у сотрудников заполнены все карты доступа. И всё равно NPE. Видимо, что-то в аннотациях.
...
Рейтинг: 0 / 0
Не получается распарсить xml
    #39558814
MaxLich
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Сама получаемая ошибка:
consoleException in thread "AWT-EventQueue-0" java.lang.NullPointerException
at com.sun.xml.internal.bind.v2.runtime.reflect.Lister$CollectionLister.addToPack(Lister.java:289)
at com.sun.xml.internal.bind.v2.runtime.reflect.Lister$CollectionLister.addToPack(Lister.java:253)
at com.sun.xml.internal.bind.v2.runtime.unmarshaller.Scope.add(Scope.java:106)
at com.sun.xml.internal.bind.v2.runtime.property.ArrayERProperty$ReceiverImpl.receive(ArrayERProperty.java:198)
at com.sun.xml.internal.bind.v2.runtime.unmarshaller.UnmarshallingContext.endElement(UnmarshallingContext.java:597)
at com.sun.xml.internal.bind.v2.runtime.unmarshaller.SAXConnector.endElement(SAXConnector.java:165)
at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.endElement(AbstractSAXParser.java:609)
at com.sun.org.apache.xerces.internal.parsers.AbstractXMLDocumentParser.emptyElement(AbstractXMLDocumentParser.java:183)
at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.scanStartElement(XMLNSDocumentScannerImpl.java:351)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(XMLDocumentFragmentScannerImpl.java:2784)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:602)
at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.next(XMLNSDocumentScannerImpl.java:112)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:505)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:841)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:770)
at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:141)
at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1213)
at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(SAXParserImpl.java:643)
at com.sun.xml.internal.bind.v2.runtime.unmarshaller.UnmarshallerImpl.unmarshal0(UnmarshallerImpl.java:243)
at com.sun.xml.internal.bind.v2.runtime.unmarshaller.UnmarshallerImpl.unmarshal(UnmarshallerImpl.java:214)
at javax.xml.bind.helpers.AbstractUnmarshallerImpl.unmarshal(AbstractUnmarshallerImpl.java:157)
at javax.xml.bind.helpers.AbstractUnmarshallerImpl.unmarshal(AbstractUnmarshallerImpl.java:214)
at org.limantrade.model.xml.XmlParser.parse(XmlParser.java:59)
at org.limantrade.model.xml.XmlParser.parseXmlStaff(XmlParser.java:18)
at org.limantrade.model.PercoConnectorMock.getStaffList(PercoConnectorMock.java:42)
at org.limantrade.model.MainModel.loadTableModelEmployees(MainModel.java:68)
at org.limantrade.model.MainModel.loadTableModel(MainModel.java:51)
at org.limantrade.controller.MainController.onRefreshTable(MainController.java:29)
at org.limantrade.view.ViewGUI.fireUpdateTable(ViewGUI.java:163)
at org.limantrade.view.guicomponents.PanelTableWithButton.lambda$addComponents$0(PanelTableWithButton.java:57)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2022)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2348)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252)
at java.awt.Component.processMouseEvent(Component.java:6533)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3324)
at java.awt.Component.processEvent(Component.java:6298)
at java.awt.Container.processEvent(Container.java:2237)
at java.awt.Component.dispatchEventImpl(Component.java:4889)
at java.awt.Container.dispatchEventImpl(Container.java:2295)
at java.awt.Component.dispatchEvent(Component.java:4711)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4889)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4526)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4467)
at java.awt.Container.dispatchEventImpl(Container.java:2281)
at java.awt.Window.dispatchEventImpl(Window.java:2746)
at java.awt.Component.dispatchEvent(Component.java:4711)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:758)
at java.awt.EventQueue.access$500(EventQueue.java:97)
at java.awt.EventQueue$3.run(EventQueue.java:709)
at java.awt.EventQueue$3.run(EventQueue.java:703)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:80)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:90)
at java.awt.EventQueue$4.run(EventQueue.java:731)
at java.awt.EventQueue$4.run(EventQueue.java:729)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:80)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:728)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)
...
Рейтинг: 0 / 0
Не получается распарсить xml
    #39558826
Valery Shiskin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MaxLich,

Попробуйте
@XmlElementWrapper(name = "identifiers" nillable=true)
...
Рейтинг: 0 / 0
Не получается распарсить xml
    #39558835
Valery Shiskin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Valery Shiskin,

Настораживает, что не все атрибуты для identifire представлены в классе. Попробуйте в самом первом staffnode убрать тэги и также как и для других укказать <identifires/>.
...
Рейтинг: 0 / 0
Не получается распарсить xml
    #39558839
MaxLich
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Valery Shiskin,
Увы, не помогло (хотя я тоже подумал, что может быть из-за этого).
...
Рейтинг: 0 / 0
Не получается распарсить xml
    #39558840
MaxLich
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Valery ShiskinValery Shiskin,

Настораживает, что не все атрибуты для identifire представлены в классе. Попробуйте в самом первом staffnode убрать тэги и также как и для других укказать <identifires/>.
Почему не все? Вроде все, да и я думаю, это не важно. Просто он будет их пропускать, и ничего не делать. Будет заполнять только те поля, для которых есть соот-щие атрибуты.
...
Рейтинг: 0 / 0
Не получается распарсить xml
    #39558841
MaxLich
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Valery ShiskinValery Shiskin,
Попробуйте в самом первом staffnode убрать тэги и также как и для других укказать <identifires/>.
Что-то не понял, что Вы предлагаете.
...
Рейтинг: 0 / 0
Не получается распарсить xml
    #39558844
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: java
1.
2.
3.
4.
5.
6.
public List<AccessCard> getAccessCards() {
    if(this.accessCards== null) {
        this.accessCards= new ArrayList();
    }
    return this.accessCards;
}
...
Рейтинг: 0 / 0
Не получается распарсить xml
    #39558848
Valery Shiskin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MaxLich,

Первое, это исправить
@XmlElement("identifier")

на

@XmlElement(name="identifier")

Если опять не пройдет (в чем я сомневаюсь), то во втором тэге <staffnode> замените Ваш <identifiers ... > на пустой тэг <identifires/>
...
Рейтинг: 0 / 0
Не получается распарсить xml
    #39558860
MaxLich
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Valery ShiskinMaxLich,

Первое, это исправить
@XmlElement("identifier")

на

@XmlElement(name="identifier")

Если опять не пройдет (в чем я сомневаюсь), то во втором тэге <staffnode> замените Ваш <identifiers ... > на пустой тэг <identifires/>
1-ое, как я писал выше, я уже сделал, и не помогло. По второму сейчас попробую что-нибудь.
...
Рейтинг: 0 / 0
Не получается распарсить xml
    #39558864
MaxLich
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Blazkowicz,
хм, это помогло. Но хотелось бы решить эту задачу средствами JAXB. Надо почитать про пустные коллекции в xml.
...
Рейтинг: 0 / 0
Не получается распарсить xml
    #39558871
Valery Shiskin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MaxLich,

Я взял Ваш код и запустил. Все работает, после исправления

@XmlElement("identifier")

на

@XmlElement(name="identifier")

Вы нигде не говорили, что исправили эту ошибку.
...
Рейтинг: 0 / 0
Не получается распарсить xml
    #39558877
Valery Shiskin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Valery Shiskin,

Правда мне пришлось сделать свой date Adapter, но это не должно повлиять.
...
Рейтинг: 0 / 0
Не получается распарсить xml
    #39558883
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MaxLichхм, это помогло. Но хотелось бы решить эту задачу средствами JAXB. Надо почитать про пустные коллекции в xml.
JAXB сам такой код генерит по схеме. Он, ведь, даже не знает какой вам тип коллекции нужен. Так что не морочте голову.
...
Рейтинг: 0 / 0
Не получается распарсить xml
    #39558901
Valery Shiskin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Valery Shiskin,

Все-таки, еще раз проверьте import операторы.
...
Рейтинг: 0 / 0
Не получается распарсить xml
    #39558954
MaxLich
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Попробовал закомментить код в геттер:
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
    @XmlElementWrapper(name = "identifiers",nillable = true)
    @XmlElement(name = "identifier")
    public List<AccessCard> getAccessCards() {
/*        if(this.accessCards == null) {
            this.accessCards = new ArrayList<>();
        }*/
        return accessCards;
    }


И скормил ему такой xml:
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
<?xml version="1.0" standalone="yes"?>
<documentrequest type="staff" mode_display="employ_and_dismiss" subdiv="">
    <staff>
        <staffnode last_name="Шевчук" first_name="Александр" middle_name="Михайлович" id_internal="7464"
                   id_external="134381" tabel_id="333333" date_begin="23.08.2016" date_action="23.08.2016"
                   id_subdiv_external="{553C5636-6DC0-4F91-8045-A631D466D836}"
                   id_appoint_external="{8FB709D9-7CAB-441D-ABD5-367449ABF623}"
                   id_graphwork_external="{3F26F519-6A39-4B01-A784-C33CEFF12A1C}" id_subdiv_internal="1"
                   id_appoint_internal="1" id_graphwork_internal="0" date_dismiss="" path_photo="">
            <identifiers/>
            <sms_phones/>
        </staffnode>
        <staffnode last_name="Шулаков" first_name="Максим" middle_name="Валерьевич" id_internal="7471"
                   id_external="134384" tabel_id="123" date_begin="07.11.2017" date_action="07.11.2017"
                   id_subdiv_external="{553C5636-6DC0-4F91-8045-A631D466D836}"
                   id_appoint_external="{8FB709D9-7CAB-441D-ABD5-367449ABF623}"
                   id_graphwork_external="{3F26F519-6A39-4B01-A784-C33CEFF12A1C}" id_subdiv_internal="1"
                   id_appoint_internal="1" id_graphwork_internal="0" date_dismiss="" path_photo="">
            <identifiers/>
            <sms_phones/>
        </staffnode>
    </staff>
</documentrequest>


Всё прошло, объекты AccessCard получились пустыми (как и ожидалось).

Но если после этого ему скармливать другой xml:
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
<?xml version="1.0" standalone="yes"?>
<documentrequest type="staff" mode_display="employ_and_dismiss" subdiv="">
    <staff>
        <staffnode last_name="Шевчук" first_name="Александр" middle_name="Михайлович" id_internal="7464"
                   id_external="134381" tabel_id="333333" date_begin="23.08.2016" date_action="23.08.2016"
                   id_subdiv_external="{553C5636-6DC0-4F91-8045-A631D466D836}"
                   id_appoint_external="{8FB709D9-7CAB-441D-ABD5-367449ABF623}"
                   id_graphwork_external="{3F26F519-6A39-4B01-A784-C33CEFF12A1C}" id_subdiv_internal="1"
                   id_appoint_internal="1" id_graphwork_internal="0" date_dismiss="" path_photo="">
            <identifiers>
                <identifier type_identifier="family_number" id_card="7466" identifier="9236095"
                            identifier_transformed="9236095" date_begin_action="23.08.2016" date_end_action="01.01.3015"
                            prohibit="false"/>
            </identifiers>
            <sms_phones/>
        </staffnode>
        <staffnode last_name="Шулаков" first_name="Максим" middle_name="Валерьевич" id_internal="7471"
                   id_external="134384" tabel_id="123" date_begin="07.11.2017" date_action="07.11.2017"
                   id_subdiv_external="{553C5636-6DC0-4F91-8045-A631D466D836}"
                   id_appoint_external="{8FB709D9-7CAB-441D-ABD5-367449ABF623}"
                   id_graphwork_external="{3F26F519-6A39-4B01-A784-C33CEFF12A1C}" id_subdiv_internal="1"
                   id_appoint_internal="1" id_graphwork_internal="0" date_dismiss="" path_photo="">
            <identifiers>
                <identifier type_identifier="family_number" id_card="7472" identifier="4428200"
                            identifier_transformed="4428200" date_begin_action="07.11.2017" date_end_action="01.01.3015"
                            prohibit="false"/>
            </identifiers>
            <sms_phones/>
        </staffnode>
    </staff>
</documentrequest>


То опять такая же ошибка.
...
Рейтинг: 0 / 0
Не получается распарсить xml
    #39558957
MaxLich
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
И как я и ожидал, если файл смешанный (с заполненными тегами и с пустыми), то тоже ошибка вылетает.
...
Рейтинг: 0 / 0
Не получается распарсить xml
    #39558965
MaxLich
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Попробовал сгенерировать код с помощью ИДЕИ: код, конечно, ужасный, и с ним тяжело работать, но заметил, что он тоже в геттере сформировал проверку на нулл:
Код: java
1.
2.
3.
    if(this.accessCards== null) {
        this.accessCards= new ArrayList();
    }
...
Рейтинг: 0 / 0
Не получается распарсить xml
    #39558968
Valery Shiskin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MaxLich,

Я полностью, без изменений, кроме DateAdapter и исправленной ошибки, взял ваш код, ваш xml (copy/paste) запустил у себя и напечатал. Без проблем. Чудес не бывает. Посмотрите, как у вас сформирована строка знаков с xml кодом, еще раз посмотрите import.
...
Рейтинг: 0 / 0
Не получается распарсить xml
    #39558972
MaxLich
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Поэтому решил оставить так, как было: с проверкой на нулл внутри геттера и со всеми нужными аннотациями. Всем спасибо. Удачи!
...
Рейтинг: 0 / 0
Не получается распарсить xml
    #39558975
Valery Shiskin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MaxLich,

Зря Вы сдались. Где-то у Вас есть ошибка, раз у меня все работает
...
Рейтинг: 0 / 0
Не получается распарсить xml
    #39558980
Valery Shiskin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MaxLich,

Зря Вы сдались. Где-то у Вас есть ошибка, раз у меня все работает. Посмотрите еще на DateAdapter - это то единственное, что я подставил своего.
...
Рейтинг: 0 / 0
Не получается распарсить xml
    #39558985
Valery Shiskin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MaxLich,

Зря Вы сдались. Где-то у Вас есть ошибка, раз у меня все работает. Тем более, что при пустом тэге <identifires/> у Вас тоже работает. Посмотрите еще на DateAdapter - это то единственное, что я подставил своего.

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
  private static class DateAdapter extends XmlAdapter<String, Date> {
        private final SimpleDateFormat dateFormat = new SimpleDateFormat("dd_mm_yyyy");

        @Override
        public Date unmarshal(final String v) throws Exception {
            return dateFormat.parse(v);
        }

        @Override
        public String marshal(final Date v) throws Exception {
            return dateFormat.format(v);
        }
    }
...
Рейтинг: 0 / 0
Не получается распарсить xml
    #39559042
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Valery ShiskinГде-то у Вас есть ошибка, раз у меня все работает.
Ведь, не может быть такого, что у вас другая версия JAXB. Они, ведь, все одинаковые. Правда?
...
Рейтинг: 0 / 0
Не получается распарсить xml
    #39559280
Valery Shiskin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Blazkowicz,

Прочитайте cамый первый пост, где напмсано:
"Использую базовый JAXB"

Конечно, можно предположить использование древней jdk.
...
Рейтинг: 0 / 0
Не получается распарсить xml
    #39560324
MaxLich
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Valery Shiskin,
sdk 1.8.
По поводу остального: раз JAXB сам создаёт похожий код, и он у меня работает, значит, вполне нормальное решение. Многие, собственно, всё и доверяют JAXB'у.
...
Рейтинг: 0 / 0
Не получается распарсить xml
    #39560560
Valery Shiskin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MaxLich,

Да все понятно. Не понятно, почему весь Ваш код у меня работает, а у Вас нет. Единственно разумное для меня объяснение - это исходный xml файл, где что-то не так. Ваш xml я аккуратненько записал в строку знаков безо всяких изменений. Вы ведь тоже в коде используете строку знаков для xml. Посмотрите ее, возможно неверное преобразование из файла или бд в строку.
...
Рейтинг: 0 / 0
Не получается распарсить xml
    #39560568
Valery Shiskin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Valery Shiskin,

Единственно, чем отличается мой код - это использование моего DateAdapter (приводил его в посте выше). Что-то у Вас не так. И это что-то может вызвать другие ошибки, если Вы будете расширять или использовать свой проект.
...
Рейтинг: 0 / 0
Не получается распарсить xml
    #39560587
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Valery ShiskinMaxLich,

Да все понятно. Не понятно, почему весь Ваш код у меня работает, а у Вас нет. Единственно разумное для меня объяснение - это исходный xml файл, где что-то не так. Ваш xml я аккуратненько записал в строку знаков безо всяких изменений. Вы ведь тоже в коде используете строку знаков для xml. Посмотрите ее, возможно неверное преобразование из файла или бд в строку.
Ваша правда. У меня и в Java 7 и в Java 6 отрабатывает без такого геттера.
...
Рейтинг: 0 / 0
Не получается распарсить xml
    #39560616
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MaxLich,

я могу повторить ошибку, если уберу генерик тип из списка. Перепроверьте ещё раз все импорты.
...
Рейтинг: 0 / 0
Не получается распарсить xml
    #39560635
Valery Shiskin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Blazkowicz,

Попробовал. Подтверждаю. NPE точь в точь
...
Рейтинг: 0 / 0
Не получается распарсить xml
    #39560903
Partisan M
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Слово "парсить" не существует, поэтому и должно не получаться "распарсить". Однако я для такой задачи (превращения XML в Java объект) применяю не голый JAXB, а библиотеку Jackson. Есть ряд других библиотек, но эта нравится единообразной работой с XML и JSON (чтение и запись). В ней эта проблема с незаполненным или не существующим в XML элементом легко решается с помощью настроек.
...
Рейтинг: 0 / 0
Не получается распарсить xml
    #39568202
MaxLich
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Partisan MСлово "парсить" не существует, поэтому и должно не получаться "распарсить". Однако я для такой задачи (превращения XML в Java объект) применяю не голый JAXB, а библиотеку Jackson. Есть ряд других библиотек, но эта нравится единообразной работой с XML и JSON (чтение и запись). В ней эта проблема с незаполненным или не существующим в XML элементом легко решается с помощью настроек.
Первый Ваш дурацкий выпад пропущу.
По поводу второго: не знал, что джексон ещё с XML работает. В сети как-то нет информации по работе Jackson c XML, только по работе с JSON. Если добавляешь в поисковый запрос слово "XML", то в поиске вылезает JAXB.)
...
Рейтинг: 0 / 0
Не получается распарсить xml
    #39568213
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MaxLichПервый Ваш дурацкий выпад пропущу.
Это его визитная карточка. Не обращайте внимания.
...
Рейтинг: 0 / 0
Не получается распарсить xml
    #39568879
Valery Shiskin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Partisan M,

А "голый jaxb" существует?
...
Рейтинг: 0 / 0
40 сообщений из 40, показаны все 2 страниц
Форумы / Java [игнор отключен] [закрыт для гостей] / Не получается распарсить xml
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]