Jaxb 및 Object 클래스는 비 정렬화할 때 XML에서 값을 가져 오지 않습니다.

카를로스 사릭

다음 소스 코드에 문제가 있습니다. "Simple"클래스를 비 정렬 화 한 후 "content"태그에서 생성 된 속성 "content"는 null입니다. 내 말은 "content"속성이 xml에서 "123456"값을 얻지 못함을 의미합니다.

@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "Simple", propOrder = {
    "content"})
public class Simple extends Valor{

    @XmlElements({
        @XmlElement(name="content",type=String.class),
        @XmlElement(name="content",type=Integer.class),
    })
    protected Object content;

    //getters y setters
}

file.xml

<simple>
    <content>
        123456
    <content>
</simple>

용맹 클래스

@XmlSeeAlso({
Varios.class,
Simple.class,
Grilla.class
})
@XmlTransient
public abstract class Valor {
    public abstract String getValorString();
}

이견있는 사람? 미리 감사드립니다!

내가 겪고있는 문제에 대한 명확성을 추가합니다. Simple 클래스를 넣으면 :

@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "Simple", propOrder = {
"content"})
public class Simple extends Valor{

    @XmlElements({
        @XmlElement(name="content",type=String.class),
        @XmlElement(name="content",type=Integer.class),
    })
    protected Object content;

    //getters y setters
}

xml이 다음과 같은 경우 :

<simple>
<content>
    123456
</content>
</simple>

출력은 다음과 같습니다.

123456

그러나 xml이 다음과 같은 경우 :

<simple>
<content>
    Hi!!
</content>
</simple>

출력은 다음과 같습니다.

null

이제 Simple 클래스 인 경우 다음 코드와 같이 XmlElements를 교환합니다.

    @XmlElements({
        @XmlElement(name="content",type=Integer.class),
        @XmlElement(name="content",type=String.class)
    })
    protected Object content;

xml이 다음과 같은 경우 :

<simple>
<content>
    123456
</content>
</simple>

출력은 다음과 같습니다.

null

그러나 xml이 다음과 같은 경우 :

<simple>
    <content>
        Hi!!
    </content>
</simple>

출력은 다음과 같습니다.

Hi!!
Bdoughan

나는 당신이보고있는 것을 재현 할 수 없었습니다. 아래는 내가 시도한 것입니다.

자바 모델

단순한

다음은 Simple수업을 위해 구현 한 것 입니다.

import javax.xml.bind.annotation.*;

@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "Simple", propOrder = {
    "content"})
public class Simple extends Valor{

    @XmlElements({
        @XmlElement(name="content",type=String.class),
        @XmlElement(name="content",type=Integer.class),
    })
    protected Object content;

    public Object getContent() {
        return content;
    }

    @Override
    public String getValorString() {
        throw new UnsupportedOperationException();
    }

    public void setContent(Object content) {
        this.content = content;
    }

}

데모 코드

input.xml

다음은 content수정을 위한 닫기 태그가있는 입력 문서입니다 .

<simple>
    <content>
        123456
    </content>
</simple>

데모

import javax.xml.bind.*;
import javax.xml.transform.stream.StreamSource;

public class Demo {

    public static void main(String[] args) throws Exception {
        JAXBContext jc = JAXBContext.newInstance(Simple.class);

        Unmarshaller unmarshaller = jc.createUnmarshaller();
        StreamSource source = new StreamSource("src/forum22911170/input.xml");
        Simple simple = unmarshaller.unmarshal(source, Simple.class).getValue();

        System.out.println(simple.getContent());
    }

}

산출

다음은 데모 코드를 실행 한 결과입니다.

123456

최신 정보

문제는 @XmlElements주석에 동일한 요소에 매핑 된 두 옵션이 있다는 것 content입니다. 비 정렬 화의 경우 JAXB는 @XmlElement해당 이름 의 첫 번째 요소를 기반으로 요소를 처리합니다 . 아래의 경우 항상으로 처리하고 항상으로 처리 String하는 순서를 반대로합니다 Integer.

@XmlElements({
    @XmlElement(name="content",type=String.class),
    @XmlElement(name="content",type=Integer.class),
})
protected Object content;

적절한 사용법은 다음과 같은 다른 요소에 매핑하는 것입니다.

@XmlElements({
    @XmlElement(name="FOO",type=String.class),
    @XmlElement(name="BAR",type=Integer.class),
})
protected Object content;

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

Parcelable : 다른 앱에서 호출 할 때 비 정렬화할 때 클래스를 찾을 수 없습니다.

분류에서Dev

클래스 내의 메서드는 정수 인수에서 값을 가져 오지 않습니다.

분류에서Dev

JAXB는 XML을 비 정렬 화하고 인식 된 모든 태그를 가져옵니다.

분류에서Dev

srvany.exe 및 Java 8을 사용할 때 Java 서비스가 시작되지 않습니다.

분류에서Dev

스프레드 시트에서 값을 가져 오려고 할 때 "정의되지 않음"가져 오기

분류에서Dev

스프레드 시트에서 값을 가져 오려고 할 때 "정의되지 않음"가져 오기

분류에서Dev

생성자가 다른 서비스에서 값을 가져 오는 Autofac에 타사 클래스 등록

분류에서Dev

2 개의 네임 스페이스가있을 때 JAXB를 사용하여 2 개의 Java 객체에 대한 XML 응답을 어떻게 비 정렬화할 수 있습니까?

분류에서Dev

JSON 문자열에서 역 직렬화 할 때 내 클래스가 채워지지 않습니다.

분류에서Dev

직렬화 할 때 선언 순서대로 클래스 속성을 가져 오는 방법

분류에서Dev

Java-JButton을 눌렀을 때 JTextField에서 값을 가져 오는 다른 클래스에서 변수 호출

분류에서Dev

Python에서 '매개 변수 값이 사용되지 않습니다'라는 클래스를 초기화 할 때 경고가 표시됩니다.

분류에서Dev

EnterAlwaysCollapsed는 아래로 스크롤 할 때 도구 모음을 다시 가져 오지 않습니다.

분류에서Dev

양식에서 값을 가져 오려고 할 때 Jquery Val이 작동하지 않습니다.

분류에서Dev

jQuery는 입력에서 값을 가져 오지 않습니다.

분류에서Dev

TypeError : Cursor 유형의 객체는 request.form.get과 db 값을 비교할 때 JSON 직렬화가 가능하지 않습니다.

분류에서Dev

jQuery는 브라우저가 특정 너비를 가질 때 부트 스트랩 탐색 앵커에 클래스 및 "데이터 토글"을 추가합니다.

분류에서Dev

HTTP 가져 오기 서비스-정의되지 않은 속성을 읽을 수 없습니다.

분류에서Dev

JAXB를 사용하여 JSON을 역 정렬화할 때 "프롤로그에서 컨텐츠가 허용되지 않음"

분류에서Dev

클래스 및 ID에 바인딩 할 때 Hover가 작동하지 않습니다.

분류에서Dev

asp.net mvc가 더 이상 하위 클래스에서 값을 가져 오지 않습니다.

분류에서Dev

텍스트 상자에서 값을 가져 오려고 할 때 정의되지 않은 배열 키

분류에서Dev

서비스가 Http 400을 반환 할 때 .map을 사용하는 Http Post가 작동하지 않습니다.

분류에서Dev

XML에서 값을 가져 오는 가장 좋은 방법은 JAXB 또는 DOM입니까?

분류에서Dev

jaxb-다른 xsd가 포함 된 XSD에서 비 정렬화할 수 없음

분류에서Dev

웹 서비스에서 XML을 가져 오시겠습니까?

분류에서Dev

스크립트에 대한 참조 및 설정 값을 가져 오지 못했습니다.

분류에서Dev

JSON에서 특정 키 값을 가져 오려고 할 때 '종료되지 않은 객체'가져 오기

분류에서Dev

클래스의 void에서 문자열 값을 가져 오면 올바르게 출력되지 않습니다.

Related 관련 기사

  1. 1

    Parcelable : 다른 앱에서 호출 할 때 비 정렬화할 때 클래스를 찾을 수 없습니다.

  2. 2

    클래스 내의 메서드는 정수 인수에서 값을 가져 오지 않습니다.

  3. 3

    JAXB는 XML을 비 정렬 화하고 인식 된 모든 태그를 가져옵니다.

  4. 4

    srvany.exe 및 Java 8을 사용할 때 Java 서비스가 시작되지 않습니다.

  5. 5

    스프레드 시트에서 값을 가져 오려고 할 때 "정의되지 않음"가져 오기

  6. 6

    스프레드 시트에서 값을 가져 오려고 할 때 "정의되지 않음"가져 오기

  7. 7

    생성자가 다른 서비스에서 값을 가져 오는 Autofac에 타사 클래스 등록

  8. 8

    2 개의 네임 스페이스가있을 때 JAXB를 사용하여 2 개의 Java 객체에 대한 XML 응답을 어떻게 비 정렬화할 수 있습니까?

  9. 9

    JSON 문자열에서 역 직렬화 할 때 내 클래스가 채워지지 않습니다.

  10. 10

    직렬화 할 때 선언 순서대로 클래스 속성을 가져 오는 방법

  11. 11

    Java-JButton을 눌렀을 때 JTextField에서 값을 가져 오는 다른 클래스에서 변수 호출

  12. 12

    Python에서 '매개 변수 값이 사용되지 않습니다'라는 클래스를 초기화 할 때 경고가 표시됩니다.

  13. 13

    EnterAlwaysCollapsed는 아래로 스크롤 할 때 도구 모음을 다시 가져 오지 않습니다.

  14. 14

    양식에서 값을 가져 오려고 할 때 Jquery Val이 작동하지 않습니다.

  15. 15

    jQuery는 입력에서 값을 가져 오지 않습니다.

  16. 16

    TypeError : Cursor 유형의 객체는 request.form.get과 db 값을 비교할 때 JSON 직렬화가 가능하지 않습니다.

  17. 17

    jQuery는 브라우저가 특정 너비를 가질 때 부트 스트랩 탐색 앵커에 클래스 및 "데이터 토글"을 추가합니다.

  18. 18

    HTTP 가져 오기 서비스-정의되지 않은 속성을 읽을 수 없습니다.

  19. 19

    JAXB를 사용하여 JSON을 역 정렬화할 때 "프롤로그에서 컨텐츠가 허용되지 않음"

  20. 20

    클래스 및 ID에 바인딩 할 때 Hover가 작동하지 않습니다.

  21. 21

    asp.net mvc가 더 이상 하위 클래스에서 값을 가져 오지 않습니다.

  22. 22

    텍스트 상자에서 값을 가져 오려고 할 때 정의되지 않은 배열 키

  23. 23

    서비스가 Http 400을 반환 할 때 .map을 사용하는 Http Post가 작동하지 않습니다.

  24. 24

    XML에서 값을 가져 오는 가장 좋은 방법은 JAXB 또는 DOM입니까?

  25. 25

    jaxb-다른 xsd가 포함 된 XSD에서 비 정렬화할 수 없음

  26. 26

    웹 서비스에서 XML을 가져 오시겠습니까?

  27. 27

    스크립트에 대한 참조 및 설정 값을 가져 오지 못했습니다.

  28. 28

    JSON에서 특정 키 값을 가져 오려고 할 때 '종료되지 않은 객체'가져 오기

  29. 29

    클래스의 void에서 문자열 값을 가져 오면 올바르게 출력되지 않습니다.

뜨겁다태그

보관