Collection values overwritten if item elements are not contiguous (mixed content)
还没有人认领这个 Issue。
评估
调研方向
使用 XmlMapper.readValue 和 issue 中的 Data 示例重现数据丢失,重点关注由 bar 分隔的重复 foo 元素。跟踪 XML 反序列化经过 Java 解析器的过程,直到为每个连续组调用 setter。完成的标准是 foo 保留全部四个值,而 bar 仍为 bar1,并为包含混合内容的 XML 添加 regression test。
由索引模型根据 Issue 内容生成。
描述
Looks like we have a bug in the parser. Parsing next simple document leads to data loss.
<Data>
<foo>foo1</foo>
<foo>foo2</foo>
<bar>bar1</bar>
<foo>foo3</foo>
<foo>foo4</foo>
</Data>
Expected result: foo java-property contains list of 4 values.
Actual result: foo java-property contains list of 2.
Setter for foo property is called two times for every tags group: foo1, foo2 and foo3, foo4. Second setter call overrides data gathered by the first call. As result parsing result contains foo list as foo3, foo4 instead of expected foo1, foo2, foo3, foo4.
Here is a java-code to reproduce the issue.
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.dataformat.xml.XmlMapper;
import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlCData;
import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlElementWrapper;
import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlProperty;
import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlRootElement;
import java.util.List;
@JacksonXmlRootElement(localName = "data")
class Data {
@JacksonXmlCData
@JacksonXmlElementWrapper(useWrapping = false)
@JacksonXmlProperty
private List<String> foo;
@JacksonXmlCData
@JacksonXmlElementWrapper(useWrapping = false)
@JacksonXmlProperty
private List<String> bar;
public List<String> getFoo() {
return foo;
}
public void setFoo(List<String> foo) {
this.foo = foo;
}
public List<String> getBar() {
return bar;
}
public void setBar(List<String> bar) {
this.bar = bar;
}
}
public class Foo {
public static void main(String[] args) throws JsonProcessingException {
String xml = ""
+ "<Data>"
+ " <foo>foo1</foo>"
+ " <foo>foo2</foo>"
+ " <bar>bar1</bar>"
+ " <foo>foo3</foo>"
+ " <foo>foo4</foo>"
+ "</Data>";
XmlMapper m = new XmlMapper();
Data data = m.readValue(xml, Data.class);
System.err.println(data.getFoo()); // Expected ["foo1", "foo2", "foo3", "foo4"] but ["foo3", "foo4"] given.
}
}
jackson-dataformat-xml version: 2.10.0
- 主要语言
- Java
- 星标
- 636
- 派生
- 250
- 平均合并
- 7 小时 10 分钟
- 30 天内合并 PR
- 8
环境准备
这个项目没有提供开发容器、Dockerfile 或贡献指南,环境需要你自己搭建:先看它的 README,通用步骤见我们的新手贡献指南。
从这里开始
- 先读完整个 Issue,再读项目的贡献指南。
- 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
- Fork 仓库,在一个分支上完成修改。
- 提交 Pull Request,并在描述里引用这个 Issue 编号。
FasterXML/jackson-dataformat-xml 的其他 Issue
-
难度 2/5 1-3 小时 新手友好度 85/100
-
难度 4/5 3-5 天 新手友好度 55/100
-
难度 4/5 3-5 天 新手友好度 45/100
FasterXML/jackson-dataformat-xml#931 · 3 条评论 ·
-
XmlMapper with `FAIL_ON_UNKNOWN_PROPERTIES` fails on whitespace-only element可能已有人在做 @arimu1 于 89 天前认领。 未关闭to-evaluate
难度 3/5 1-2 天 新手友好度 68/100
-
3.x
难度 4/5 3-5 天 新手友好度 25/100
FasterXML/jackson-dataformat-xml#787 · 1 条评论 ·
查看 FasterXML/jackson-dataformat-xml 的全部 Issue
相似的 Issue
-
Cleanup: restore the interrupt flag in AiFailureAnalyzer可能已有人在做 @Rishankgupta08 今天认领。 未关闭good first issue
难度 2/5 1-3 小时 新手友好度 82/100
seleniumboot/selenium-boot#258 · 1 条评论 ·
维护者通常 1 天内回复
-
bug
难度 2/5 1-3 小时 新手友好度 70/100
dense-analysis/ale#5181 ·
-
bug subsystem:agent-harness triage
难度 2/5 1-3 小时 新手友好度 76/100
ShaftHQ/SHAFT_ENGINE#8043 ·
维护者通常 1 天内回复
-
难度 1/5 1 小时以内 新手友好度 88/100
johanhaleby/occurrent#1505 ·
维护者通常 1 天内回复
-
bug
难度 2/5 1-3 小时 新手友好度 72/100
维护者通常 1 天内回复