我收到看起来像这样xml:
<result xmlns="firstUri">
<blackList xmlns:ns1="secondUri">
<ns2:BlackList xmlns:ns2="thirdUri">
<name xmlns="thirdUri">some value</name>
<nameFlag xmlns="thirdUri">some value</nameFlag>
</ns2:BlackList>
<ns2:BlackList xmlns:ns2="thirdUri">
<name xmlns="thirdUri">some value</name>
<nameFlag xmlns="thirdUri">some value</nameFlag>
</ns2:BlackList>
..........................................................
</blackList>
<retCode xmlns:ns1="secondUri">0</retCode>
<retDesc xmlns:ns1="secondUri">Succeeded</retDesc>
</result>
我想把它分解成对象。
我创建了以下bean:
@XmlRootElement(name = "result", namespace ="firstUri")
public class GetBlackListResp {
protected String retCode;
protected String retDesc;
protected List<BlackListItem> blackListArray;
@XmlRootElement(name = "BlackList", namespace = "thirdUri")
public static class BlackListItem{
protected String name;
protected String nameFlag;
@XmlElement(name = "name", namespace = "thirdUri")
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@XmlElement(name = "nameFlag", namespace = "thirdUri")
public String getNameFlag() {
return nameFlag;
}
public void setNameFlag(String nameFlag) {
this.nameFlag = nameFlag;
}
}
@XmlElement(name = "retCode", namespace = "firstUri")
public String getRetCode() {
return retCode;
}
public void setRetCode(String retCode) {
this.retCode = retCode;
}
@XmlElement(name = "retDesc", namespace = "firstUri")
public String getRetDesc() {
return retDesc;
}
public void setRetDesc(String retDesc) {
this.retDesc = retDesc;
}
@XmlElement(name = "blackList", namespace = "firstUri")
public List<BlackListItem> getBlackList() {
return blackListArray;
}
public void setBlackList(List<BlackListItem> blackListArray) {
this.blackListArray = blackListArray;
}
}
解组后,我得到了一个对象,它被成功填充,除了blackListArray字段。该字段包含列表,其中只有一项。并且该项中的所有字段都为空。
似乎JAXB可以找到元素,但错过了其中的所有内部元素。
我使用MOXy作为JAXB实现。
附言
我试着把包裹信息放进去。java与我的bean在文件夹中,如该问题所示
@XmlSchema(
elementFormDefault=XmlNsForm.QUALIFIED,
namespace="thirdUri",
xmlns={@XmlNs(prefix="ns2",
namespaceURI="thirdUri")}
)
package package.with.my.bean;
import javax.xml.bind.annotation.XmlNs;
import javax.xml.bind.annotation.XmlNsForm;
import javax.xml.bind.annotation.XmlSchema;
但这对我没有帮助。
你就快到了。移除内部< code>BlackListItem类上的< code>@XmlRootElement批注,并将< code>getBlackList方法上的批注更改为:
@XmlElementWrapper(name = "blackList", namespace = "firstUri")
@XmlElement(name = "BlackList", namespace = "thirdUri")
public List<BlackListItem> getBlackList() {
return blackListArray;
}
我正在尝试使用 JAXB 创建站点地图索引文件。按照创建站点地图的要求,我必须在根元素中添加命名空间属性: 我想有一个简单的方法来解决这个问题。因为这似乎是一个标准过程,所以我不想做复杂的解决方法,也不想在我的项目中添加更多的依赖项来解决这个问题 当前输出如下: 我的< code>SitemapIndex模型如下: 我还尝试手动添加名称空间字段,它可以生成文件,但是当我尝试读取文件时会出现异常。
jaxb 将所有标签分组为一个,我需要每个标签都有自己的命名空间。 具有: 需要: 将命名空间添加到@XmlElement没有帮助 包装信息:
我对XML文件进行数字签名,但需要签名标记包含名称空间前缀“ds”。我在谷歌上搜索了一下,发现了很多同样的问题,但没有令人满意的答案。 我尝试将“ds”手动放入文件中,但签名变得无效。标记“SignatureValue”对标记“SignedInfo”进行签名,因此签名无效。 谁能告诉我如何生成标记“signaturevalue”的值,以便在添加前缀“ds”后替换签名?
我有一个有趣的情况,我的XML编辑器(Oxygen,使用Xerces XML处理器)需要根标签上的前缀,但是我的JAXB XML Marshaller(也是基于Xerces的)不需要根标签上的前缀。我正在试图理解这种情况。 首先是2个模式文件: ns1.xsd ns2。xsd 目前的氧气释放(16.1)需要我称之为“版本1”的东西 版本1 如果我像下面的示例(版本1)那样删除前缀: 版本2 氧气抱
我无法使用下面的XSD验证XML, XSD数据 我在用XML验证这个XSD时遇到以下错误, cvc复合型。2.4.答:发现以元素“standardHeader”开头的内容无效。应为“{standardHeader}”之一。 如何提供此标签:
在LinearLayout中的“xmlns:android=”http://schemas.android.com/apk/res/Android“中出现错误”为标记LinearLayout找到意外的名称空间前缀“xmlns”。