gpt4 book ai didi

java - XOM 和规范 XML

转载 作者:行者123 更新时间:2023-12-02 00:41:08 28 4
gpt4 key购买 nike

我正在制作一个 java 应用程序来检查 XML 文件是否已经是 Canonical或者不使用 XOM。

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

<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 再次加载时的代码。

<?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>当我从文件加载规范文档时。

最佳答案

看起来您正在输出带有 XOM Serializer 的文档您需要使用 XOM Canonicalizer输出您的 xml 文档并使其保持规范

这给出了输出:

<?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>

以下示例程序将使用XOM Canonicalizer将您的XML规范地输出到System.out

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);

}
}

关于java - XOM 和规范 XML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6370085/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com