草庐IT

java - 可以配置 JAXB 来防止实体扩展攻击吗?

通常在java中解析XML时,可以避免成为entityexpansionattacks的受害者。通过使用dbf.setFeature(javax.xml.XMLConstants.FEATURE_SECURE_PROCESSING,true);其中dbf是用于创建用于XML解析的DocumentBuilder的DocumentBuilderFactory。但是,假设我正在使用JAXB解码一些XML,例如像这样:finalJAXBContextcontext=JAXBContext.newInstance(MyClass.class);finalUnmarshallerunmarshal

xml - JAXB 能否首先通过包含进行编码,然后通过@XmlIDREF 进行编码以供后续引用?

我想知道是否可以注释我的类,以便编码器第一次遇到一个对象时,它会生成一个适当类型的XML元素,但是任何其他任何对该对象的后续引用都将具有一个XMLIDREF条目已创建? 最佳答案 您可以利用JAXB的XmlAdapter的概念来执行如下操作:输入.xml以下是我将用于此示例的XML文档。第3个phone-number条目是对第一个phone-number条目的引用,第5个phone-number条目是对第四:555-AAAA555-BBBB555-WORK1234客户客户类维护一个PhoneNumber对象的集合。PhoneNumb

java - jaxb:如何绑定(bind)嵌套元素

这是我的xml:12我想要以下父类:@XmlRootElementParent{@XmlElement(name="children/child")Listchildren;}我不想为元素“children”设置类。我应该如何映射fieldchildren? 最佳答案 使用@XmlElementWrapper:@XmlRootElementpublicclassParent{@XmlElementWrapper(name="children")@XmlElement(name="child")Listchildren;}

java - 如何解决错误 'nexpected element (uri:"“,本地 :"Create"”。预期元素是 <{}Create>'?

关闭。这个问题是notreproducibleorwascausedbytypos.它目前不接受答案。这个问题是由于错别字或无法再重现的问题引起的。虽然类似的问题可能是on-topic在这里,这个问题的解决方式不太可能帮助future的读者。关闭10个月前。Improvethisquestion我的JAXB有问题:我的XML:coco我的Java:JAXBContextcontext=JAXBContext.newInstance("MyPackage");Unmarshallerdecodeur=context.createUnmarshaller();System.out.prin

java - JAXB 编码器缩进

我正在使用JAXB编码器来创建和格式化我的.xml文件。它工作得很好,除了一个地方。缩进缺少两个地方:INFOTEMPLATELEVEL.xml文件的其余部分看起来不错。我正在使用这种方法来美化整个代码:marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT,Boolean.TRUE);不幸的是,它不适用于这两个元素。有什么想法吗? 最佳答案 这个烦人的问题可以通过将javaxTransformer应用于输出来解决。importjavax.xml.transform.*;imp

Java 绑定(bind)与手动定义类

我有一个XML模式,需要为其创建Java类。它不是一个特别大的模式,我想它会产生大约20个类。我正在权衡是使用自动绑定(bind)程序(如JAXB或JiBX中提供的程序)还是手动编写我自己的类并使用XStream之类的东西进行编码/解码。与使用绑定(bind)程序相比,编写自己的类有哪些优点/缺点。此外,我使用一个绑定(bind)程序,我是否永远与它绑定(bind)在一起。例如,如果我使用JAXB的绑定(bind)编译器来创建类,是否必须使用JAXB进行所有编码/解码?附注我已经看到以下有关XML绑定(bind)/序列化的问题,这些问题很有用,但没有完全回答我的问题:xml-seria

java - Glassfish 4 REST XML 工作 JSON 错误

我在Glassfish4.1上有一个Web服务,它对XML正常工作,但对JSON不正常。实体类是:@XmlRootElementpublicclassPersonimplementsSerializable{/****/privatestaticfinallongserialVersionUID=-8969081094076790550L;Integerid;StringfirstName;StringlastName;StringemployeeId;/****/publicPerson(){}@OverridepublicStringtoString(){returnfirstNa

java - JAXB - 带有 java 注释的编码

我是JAXB的新手,一开始我正在整理一些简单的Java文件,例如Hello,world!。我想编码整个文件,即使我的评论行是这样放置的:/**somecomment*///anothercomment并在注释block中以XML格式获取它们:有什么方法可以用注释编码java文件吗? 最佳答案 您的用例需要克服一些障碍:注释未存储在类的字节码中,因此您需要在其他地方提供它们。JAXBAPI不提供映射到内容节点的方法。话虽如此,下面是一种可能适合您使用的方法:StAX与JAXB并利用Marshaller.Listener。Java模型客

java - 使用 JAXB 从 DTD 文件生成 Java 类 - 如何修改 DTD?

我想使用JAXB从dtd文件生成Java类。dtd看起来像这样:使用JAXB生成类时,我得到以下类:对象工厂内容个人人组团体在内容类中,检索所有人员和组的方法是publicListgetPersonOrGroup(){if(personOrGroup==null){personOrGroup=newArrayList();}returnthis.personOrGroup;}我可以在dtd文件中更改什么以便生成Java类将使persons和groups在Content中分开java类,所以要检索所有人员和组将分别调用Content.getPersons()和Content.getGro

xml - JAXB - 仅为元素的特定子类型设置 XmlAdapter?

我必须生成一个xml元素,该元素的值可以是任何“原始类型”(xsd:string、xsd:boolean等)。示例:StringValue2011-10-212011-10-21T12:00:00...所以,我使用这个实现让JAXB决定原始类型的xsi:type:publicclassField{@XmlAttributeprivateStringname;@XmlElementObjectvalue;}它按预期工作,但所有java.util.Date获取类型xs:dateTime...现在我只想在“值”对象是java.util.Date的实例时更改编码器的行为,以获取如下字段:201