我有下面的xml结构:
<Response>
<Field1>
<User>
<Name>abc</Name>
<Id>1</Id>
</User>
</Field1>
<Field2>
<User>
<Name>sdf</Name>
<Id>2</Id>
</User>
</Field2>
<Field3>
<User>
<Name>xyz</Name>
<Id>3</Id>
</User>
</Field3>
...
</Response>
有不同的 Field(X) 包装器元素,它们包含相同的用户元素。XML 中可以发送 n 个字段。因此,我不能为每个单独的Jaxb。我需要访问用户,但在取消编组步骤后忽略 Field 元素。不幸的是,我无权更改xml结构。我无法找到解决方案。任何指针都会有所帮助。
您可以对响应(根)
类执行类似操作:
@XmlRootElement(name = "Response")
@Data
@XmlAccessorType(XmlAccessType.FIELD)
public class Root {
@XmlElements(value = {
@XmlElement(name = "Field1", type = Field.class),
@XmlElement(name = "Field2", type = Field.class),
@XmlElement(name = "Field3", type = Field.class)
})
private Field field;
}
JAXB 会在遇到不同的 Field 时
自动映射到字段类。
编辑/更新
XML:
<Response>
<Field1>
<Name>abc</Name>
<Id>1</Id>
</Field1>
<Field2>
<Name>sdf</Name>
<Id>2</Id>
</Field2>
<Field3>
<Name>xyz</Name>
<Id>3</Id>
</Field3>
</Response>
根:
@XmlRootElement(name = "Response")
@Data
@XmlAccessorType(XmlAccessType.FIELD)
public class Root {
@XmlAnyElement
private List<Field> action;
}
田:
@Data
@XmlAccessorType(XmlAccessType.FIELD)
public class Field {
private String Name;
private String Id;
}
主要:
public class Main {
public static void main(String[] args) throws JAXBException, XMLStreamException {
final InputStream inputStream = Main.class.getClassLoader().getResourceAsStream("sample.xml");
final XMLStreamReader xmlStreamReader = XMLInputFactory.newInstance().createXMLStreamReader(inputStream);
final Unmarshaller unmarshaller = JAXBContext.newInstance(Root.class).createUnmarshaller();
final Root root = unmarshaller.unmarshal(xmlStreamReader, Root.class).getValue();
System.out.println(root.toString());
Marshaller marshaller = JAXBContext.newInstance(Root.class).createMarshaller();
marshaller.setProperty(Marshaller.JAXB_FRAGMENT, Boolean.TRUE);
marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE);
marshaller.marshal(root, System.out);
}
}
输出:
Root(action=[[Field1: null], [Field2: null], [Field3: null]])
<Response>
<Field1>
<Name>abc</Name>
<Id>1</Id>
</Field1>
<Field2>
<Name>sdf</Name>
<Id>2</Id>
</Field2>
<Field3>
<Name>xyz</Name>
<Id>3</Id>
</Field3>
</Response>
有太多关于大致相同主题的问题,但我找不到我想要的。如果我错过了,我很抱歉。 我正在尝试散集具有公共逻辑元素但使用不同标记定义的XML文件: 两个<代码> 我可以这样做: 所需要的只是在和中实现并分别返回或。 然而,在中有一个属性并以某种方式告诉JAXB将这两个字段映射到它似乎更简单。 我是不是想多了?你将如何实现它? (当然,我无法控制输入XML。如果可能的话,我还想避免使用MOXy的解决方案,因
您好帮助请把xml文件放在里面一些相同的元素,这些元素的内容不同,“name”属性。这些元素有不同的项目集,如何进行解咒?断续器: 我需要在Cdb和FmssSc中执行对象2的解组。我的尝试:通用元素-ServiceBroker.class 适配器.class Cdb.class FmssSc.class 演示: 错误:
我有这种结构的xml文件: 有没有可能将这种XML解组到一个对象中。问题是每个元素都有一些独特的标签。我想把这些值放到列表中,但是我不知道怎么做。
这是我的xml结构 因此,我尝试使用JAXB解组将这个xml绑定到一个类,但结果一无所获。 我在想,我有两个基本元素,课程和科目,所以我根据这些元素建立了两个类 此选项用于控制课程标签 这是为了控制主题标签。 我做了一些字符串函数,结果什么都没有。有什么问题吗?
问题内容: 我的类中有很多div,并且我想使用jquery遍历它们以检查每个div是否满足特定条件。如果为真,则应执行一个操作。 有人知道我会怎么做吗? 问题答案: 使用每个:’ ‘是数组中的位置,是您要迭代的DOM对象(也可以通过jQuery包装器进行访问)。 检查api参考以获取更多信息。
问题内容: 这样的情况有效吗? 问题答案: 没有。 元素ID在整个文档中应该是唯一的。