Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Only self-closing tag with 'xsi:nil="true"' can be mapped #2044

Closed
djdf-shaolin opened this issue May 21, 2018 · 2 comments
Closed

Only self-closing tag with 'xsi:nil="true"' can be mapped #2044

djdf-shaolin opened this issue May 21, 2018 · 2 comments

Comments

@djdf-shaolin
Copy link

Hi everybody.

I'm using jackson 2.9.5 and trying to deserialize following simple xml:

<root xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
	<friends xsi:nil="true"></friends>
</root>

into java objects:

public class Root {
    private Friend[] friends;

    public Friend[] getFriends() {
        return friends;
    }

    public void setFriends(Friend[] friends) {
        this.friends = friends;
    }
}
public class Friend {
    private String name;

    public String getName() {
        return name;
    }

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

The actual mapping is here:

public class BugStarter {
    public static void main(String[] args) throws IOException, XMLStreamException, TransformerException {
        String xml = "<root xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\">\n" +
                "\t<friends xsi:nil=\"true\"></friends>\n" +
                "</root>";

        XmlMapper xmlMapper = new XmlMapper();
        xmlMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
        Root root = xmlMapper.readValue(xml, Root.class);

        System.out.println(root);
    }
}

I'm gettng exception:

com.fasterxml.jackson.databind.exc.MismatchedInputException:
Unexpected end-of-input when binding data into temporary.experimental.jacksonbug.Friend
at [Source: (StringReader); line: 3, column: 8] (through reference chain: temporary.experimental.jacksonbug.Root["friends"]->java.lang.Object[][2])

But when I'm trying to do so with almost same xml, except the tag 'friends' is self-closing, everything works fine

<root xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
	<friends xsi:nil="true"/>
</root>

I've searched for mapper configuration to avoid this problem and also browsed for xml spec, but seems nothing wrong in both xmls, so I assumed that I've faced mapper issue.

Thanks a lot!

@cowtowncoder
Copy link
Member

Please re-file at jackson-dataformat-xml, as this is XML specific. You may want to see if an existing issue might fit this: problem itself is sort of known. I agree that start/end vs empty should not differ regarding handling: conceptually the two are equivalent.

@djdf-shaolin
Copy link
Author

Thanks a lot, Cowtowncoder. I've reposted issue here
FasterXML/jackson-dataformat-xml#293
Will close this one.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants