首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用XML增强XML

用XML增强XML
EN

Stack Overflow用户
提问于 2012-03-27 13:57:31
回答 1查看 458关注 0票数 0

javax.xml.validation.Validator有一个方法来根据模式验证和增强xml。

简化的xml:

代码语言:javascript
复制
<something>
  <sub1>false</sub1> <!-- Suppose sub1 is optional and may not be present in xml -->
  <sub2>false</sub2>
</something>

简化的xsd:

代码语言:javascript
复制
<complexType name="something">
  <sequence>
    <element name="sub1" type="boolean" maxOccurs="1" minOccurs="0" default="false"/>
    <element name="sub2" type="boolean" maxOccurs="1" minOccurs="1"/>
  </sequence>
</complexType>

简化的验证和增强代码:

代码语言:javascript
复制
Schema schema = schemaFactory.newSchema(schemaFile);
Validator validator = schema.newValidator();

DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
factory.setNamespaceAware(true);

DocumentBuilder builder = factory.newDocumentBuilder();

Document document = builder.parse(new File(xmlFile));
DOMSource input = new DOMSource(document);
DOMResult output = new DOMResult();
validator.validate(input, output);

Document result = (Document)output.getNode();

因此,除了根据模式验证xml之外,它还应该对其进行扩展,并添加任何缺少的默认值(如sub1)并将其发送到output中。

但是,当sub1result中缺失时,它并不存在于xml中。

我在哪里偏离轨道了?

编辑:

好的,找到了原因为什么sub1不见了。但是,我如何确保sub1存在于result中,即使它不是xml的呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-08-15 06:20:51

回答引用规范:增强将默认值应用于空元素。它不添加xml中不存在的元素。

换句话说,模式增强不能保证元素的存在。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9891034

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档