首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >XOM与规范XML

XOM与规范XML
EN

Stack Overflow用户
提问于 2011-06-16 09:58:39
回答 1查看 1.1K关注 0票数 0

我正在创建一个java应用程序来检查一个XML文件是否已经是规范的,或者没有使用XOM。

在我的测试中,我有以下文件,该文件已经是规范化的。

代码语言:javascript
复制
<doc xmlns="http://example.com/default" xmlns:x="http://example.com/x">
  <a a1="1" a2="2">123</a>
  <b xmlns:y="http://example.com/y" a3="&quot;3&quot;" y:a1="1" y:a2="2"></b>
</doc>

这里是我再次用XOM加载它时的代码。

代码语言:javascript
复制
<?xml version="1.0"?>
<doc xmlns="http://example.com/default" xmlns:x="http://example.com/x">
  <a a1="1" a2="2">123</a>
  <b xmlns:y="http://example.com/y" a3="&quot;3&quot;" y:a1="1" y:a2="2" />
</doc>

如您所见,它再次添加xml标记并删除结束标记</b>,因为标记b的值为空。xml标记没有任何问题,但是当我从文件中加载规范文档时,我不知道如何保持结束标记</b>

EN

回答 1

Stack Overflow用户

发布于 2012-04-18 09:25:55

看起来,您要用XOM串行化输出文档,您需要使用XOM规范化器输出xml文档并保持其规范化。

这给出了输出:

代码语言:javascript
复制
<?xml version="1.0" encoding="UTF-8"?>
<doc xmlns="http://example.com/default" xmlns:x="http://example.com/x">
    <a a1="1" a2="2">123</a>
    <b a3="&quot;3&quot;" y:a1="1" y:a2="2" xmlns:y="http://example.com/y"/>
</doc>

下面的示例程序将使用System.out将XML戛纳输出到XOM规范化器

代码语言:javascript
复制
package com.foo.bar.xom;

import java.io.IOException;

import nu.xom.Builder;
import nu.xom.canonical.Canonicalizer;
import nu.xom.Document;
import nu.xom.ParsingException;
import nu.xom.Serializer;
import nu.xom.ValidityException;

public class App
{
    public static void main(String[] args) throws ValidityException, ParsingException, IOException
    {
        Builder builder = new Builder();
        //Serializer serializer = new Serializer(System.out);
        Canonicalizer canonicalizer = new Canonicalizer(System.out, Canonicalizer.EXCLUSIVE_XML_CANONICALIZATION);
        //this assumes to your xml document is on the classpath in this package as my.xml
        Document input = builder.build(App.class.getResourceAsStream("my.xml"), null);
        //serializer.write(input);
        canonicalizer.write(input);

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

https://stackoverflow.com/questions/6370085

复制
相关文章

相似问题

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