民间,
我正在尝试使用其重载的自定义版本自动替换JAXB对象,如本文所述:
https://jaxb.java.net/guide/Adding_behaviors.html
问题是本文讨论的是JAXB 1.0,同样的机制在2.0中不起作用。 unmarshaller只是在对象层次结构中加载模式定义的对象,而不是该对象的扩展,而ObjectFactory类似乎只是被忽略。
必须有一种方法可以执行上面JAXB 2.0中的文章中描述的内容。我似乎无法弄明白。也许我需要使用xjb文件来定义这种行为或类似的东西。任何想法都表示赞赏。
由于
答案 0 :(得分:0)
看起来最好的方法是使用xjb文件自定义绑定并使其包含以下内容:
var vinsWithCarMake = Trades
.Where(x => x.Car.Make.ToLower() == carMake.ToLower())
.Select(x => x.Car.PrimaryVIN)
.ToList<string>();
var carAlias = null;
var result = myQuery.JoinAlias(x => x.Car, () => carAlias)
.WhereRestrictionOn(() => carAlias.VIN).IsInG<string>(vinsWithCarMake)
.List();
或
private static byte[] doConvert(String inStr) {
String opStr = inStr.substring(1);
opStr = opStr.substring(0, opStr.length()-1);
int val;
String[] arr = opStr.split("[,]");
byte[] retVal = new byte[arr.length];
for (int i=0; i<arr.length; i++) {
opStr = arr[i].trim();
try {
val = Integer.parseInt(opStr);
} catch (Exception e) {
System.out.println("bad input at item #"+i+": "+opStr);
return null;
}
if (val > 255) {
System.out.println("bad input value at item #"+i+": "+val+" > 255");
return null;
}
retVal[i] = (byte) val;
}
return retVal;
}
这似乎照顾了我的需要。