我想使用JAXB来
下面是原始的 XML:
<customer xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://example.com">
<dataList>
<data xsi:type="keyValuePair">
<key>key1</key>
<value>val1</value>
</data>
<data xsi:type="keyValuePair">
<key>key2</key>
<value>val2</value>
</data>
</dataList>
<id>123</id>
</customer>
我正在使用以下POJO:
@XmlRootElement(namespace = "http://example.com")
public class Customer {
private String id;
private List<KeyValueData> data;
public Customer(){}
@XmlElement
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
@XmlElement
@XmlElementWrapper(name="dataList")
public List<KeyValueData> getData() {
return data;
}
public void setData(List<KeyValueData> data) {
this.data = data;
}
}
public class KeyValueData {
private String type;
private String key;
private String value;
public KeyValueData(){}
@XmlElement
public String getKey() {
return key;
}
public void setKey(String key) {
this.key = key;
}
@XmlElement
public String getValue() {
return value;
}
public void setValue(String value) {
this.value = value;
}
@XmlAttribute(namespace = "http://www.w3.org/2001/XMLSchema-instance" )
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
}
我用于取消/编组的代码:
InputStream inputStream = new ByteArrayInputStream(xmlString.getBytes());
JAXBContext context = JAXBContext.newInstance(Customer.class);
Unmarshaller unmarshaller = context.createUnmarshaller();
Customer customer = (Customer) unmarshaller.unmarshal(inputStream);
Marshaller m = context.createMarshaller();
m.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
m.marshal(customer, System.out);
这实际上不起作用,我甚至无法解组初始xml。但是如果我尝试封送一个POJO,我只在代码中设置字段。我得到以下结果:
<ns3:customer xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ns3="http://example.com">
<dataList>
<data xsi:type="keyValuePair">
<key>key1</key>
<value>val1</value>
</data>
<data xsi:type="keyValuePair">
<key>key2</key>
<value>val2</value>
</data>
</dataList>
<id>123</id>
</ns3:customer>
我如何摆脱这个ns3前缀?
我找到了一个解决方案,在包级别添加命名空间定义
package-info.java
@XmlSchema(namespace = "http://example.com", elementFormDefault = XmlNsForm.QUALIFIED)
package com.example;
(并将其从@XMLRootElement中删除)
我使用JAXB从SOAP响应中解析xml元素。我已经为xml元素定义了POJO类。我已经测试了没有名称空间和前缀的pojo类,它工作得很好。需求是解析来自SOAPMessage对象的输入
问题内容: 这是我的xml,需要将其转换为Java。我用过jaxb 并引发以下异常javax.xml.bind.UnmarshalException:意外元素(uri:“ http://www.ae.com/Event/Load ”,本地:“ Order”)。期望的元素是<{} lm:Order> 这是我的解组代码 订购Pojo班 您能否也帮助我阅读,当前正在读取文件,需要读取为XML Strin
我正在尝试使用JAXB解组一个xml文件。当我使用具有正确名称和命名空间的@XmlElement时,解组工作(例如@XmlElement(name=“name”,namespace=”http://www.test.com")) xml文件(test.xml)的内容: JAXBExample.java的内容是: 内容 包装stackoverflow.problem.jaxb.ns; 如果我取消注释
我花了一些时间来调查是什么问题,但我不能解决它。当我在XML下面反封送和回封送时,我看到的是不同的XML。 在上面的xml中,只有一个标记(第一个),其余所有(包括名称空间)都是意外元素。另一个应用程序发送上述XML。 null 我真的不明白QName的事
我正在开发一个客户端来使用 Web 服务,但由于某种原因,除非所有命名空间都正确且没有任何前缀,否则我的请求没有得到正确处理。 我所有的类都是由服务提供商使用提供的XSD和WSDL创建的。 NfeDadosMsg.class 包装信息.java TConsStatServ.class package br.inf.portalfiscal.nfe; 包装信息.java 输出xml: 由于某种原因,
我正在尝试使用 JAXB 创建站点地图索引文件。按照创建站点地图的要求,我必须在根元素中添加命名空间属性: 我想有一个简单的方法来解决这个问题。因为这似乎是一个标准过程,所以我不想做复杂的解决方法,也不想在我的项目中添加更多的依赖项来解决这个问题 当前输出如下: 我的< code>SitemapIndex模型如下: 我还尝试手动添加名称空间字段,它可以生成文件,但是当我尝试读取文件时会出现异常。