我有一个没有定义属性的XML内容,如下所示:
<rootElement>
<subElement1/>
</rootElement>
我希望使用XML Schema(XSD)中为此XML定义的必需属性填充此XML内容。
例如,根据XSD,subElement1具有必需属性'id'。
检测并将这些属性添加到XML的最佳方法(用于Java处理)是什么? 我们需要添加必需的属性并为它们设置适当的值。
上面的例子我们需要有以下XML:
<rootElement>
<subElement1 id="some-value"/>
</rootElement>
答案 0 :(得分:3)
我建议您使用JAXB。在互联网上搜索教程。
继续使用JAXB,
的步骤required
个元素。元素的JAXB注释看起来像@XmlElement(name = "ElementName", required = true)
。属性注释与此类似,@XmlAttribute(required = true)
将您的bean备份回XML。您可以使用ValidationHandler
验证您的bean,同时编组。以下是示例代码段
marshller = JAXBContext.newInstance(pkgOrClassName).createUnmarshaller();
marshller.setSchema(getSchema(xsd)); // skip this line for unmarshaller
marshller.setEventHandler(new ValidationHandler()); // skip this line for unmarshaller
答案 1 :(得分:3)
在XML架构定义(即XSD文件)中,默认情况下属性是可选的。要创建所需的属性,您必须定义:
<xs:attribute name="surname" type="xs:string" use="required"/>
您将在W3 Schools上找到关于XML和XML架构定义(即XSD)的非常好的介绍。
在Java中,定义XML模式的等效方法是使用JAXB,即包含在Java SE中的Java API for XML Binding。你可以在那里定义,例如
@XmlRootElement
public class Person { public @XmlAttribute(required=true) String surname; }
希望这可以澄清你的问题。
答案 2 :(得分:0)
使用DOM解析器。有遍历XML树,访问,插入和删除节点的方法
答案 3 :(得分:0)
我对Cris有同样的想法,但我认为使用此验证器,您没有关于您遇到错误的信息。 我认为您必须创建或扩展自己的验证器。