Jackson XML 구문 분석

Jake

잭슨 2.2.3

먼저, 어리석은 실수를 용서 해주세요. 네트워크 연결이 끊어져서 수동으로 다시 입력해야했습니다)

다음 XML이 있습니다.

<orgs>
    <org name="Test1">
        <item>a</item>
        <item>b</item>
    </org>
    <org name="Test2">
        <item>c</item>
        <item>d</item>
        <item>e</item>
    </org>
</orgs>

이것을 구문 분석하기 위해 다음 클래스가 있습니다.

@XmlRootElement(name = "orgs")
@XmlAccessorType(XmlAccessType.FIELD)
public class XmlOrgElements {

    private List<Org> orgs;

    public List<Org> getOrgs() {
        return orgs;
    }

    public void setOrg(List<Org> orgs) {
        this.orgs = orgs;
    }

    public class Org {
        @JacksonXmlProperty(isAttribute = true)
        private String name;
        private List<Item> items;

        public String getName() {
            return name;
        }

        public void setName(String name) {
            this.name = name;
        }

        public List<Item> getItems() {
            return items;
        }

        public void setName(List<Item> items) {
            this.items = items;
        }
    }

    public class Item {
        @JacksonXmlText
        private String item;

        public String getItem() {
            return item;
        }

        public void setItem(String item) {
            this.item = item;
        }
    }
}

하지만 내가 돌려받는 것은 "orgs = null"뿐입니다. 이유를 아는 사람이 있습니까?

StaxMan

목록에 대해 래핑되지 않은 처리를 활성화해야합니다. 기본값은 "래핑 된"형식을 사용하는 것입니다. 이 문제를 진단하는 가장 좋은 방법은 Java 객체로 시작하여 XML로 직렬화하고 출력 형식이 무엇인지 확인하는 것입니다. 이것은 구조가 어떻게 다른지에 대한 아이디어를 제공합니다.

기본적으로 언 래핑 된 스타일을 사용하려면 다음을 사용할 수 있습니다.

JacksonXmlModule module = new JacksonXmlModule();
module.setDefaultUseWrapper(false);
mapper.registerModule(module);

주석도 있습니다 @JacksonXmlElementWrapper.

public class Bean {
  @JacksonXmlElementWrapper(useWrapping=false)
  public List<Stuff> entry;
}

목록 속성별로 동작을 변경합니다.

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

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

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사