【问题标题】:JOOX self closing XML tagJOOX 自关闭 XML 标记
【发布时间】:2016-06-16 10:32:14
【问题描述】:

我在使用 JOOX 转换 XML 时遇到问题。我正在对匹配 fieldTag 的元素进行一些更改

我有如下代码:

   Match xml = $(new StringReader(content.toString()));
        Match find = xml.find(fieldTag);
        Iterator<Element> iterator = find.iterator();
        while(iterator.hasNext()){
            Element next = iterator.next();
            String text = $(next).text();
            if(text.length() == 0) continue;

            next.setNodeValue("....");
        }

    return xml.toString();

但是,例如输入这样的 XML:

<Body>
<A>ABC</A>
<B></B>
</Body>

这是我得到的结果:

<Body>
<A>transformed</A>
<B/>
</Body>

您可以注意到元素 B 是一个自封闭的 XML 标记。有谁知道我如何使它成为&lt;B&gt;&lt;/B ??

【问题讨论】:

    标签: java xml xml-parsing joox


    【解决方案1】:

    为什么重要?任何使用 XML 解析器读取结果文档的人都不会注意到其中的差异,而使用不是 XML 解析器的东西读取它的任何人都需要接受再教育。大多数 XML 序列化程序不会让您对这些细节进行任何控制,就像它们允许您选择是否在属性值周围使用单引号或双引号一样。

    【讨论】:

    • 使用 XML 与遗留系统通信时的要求之一就是这样。
    • 好吧,一旦你开始说“我们的一个系统并没有真正正确地处理 XML,所以与之交谈的每个人都必须进行调整”,那么你就失去了所有的好处使用开放标准,您将大大增加您的成本。如果您确实无法更改遗留系统以理解真正的 XML,那么请在其前端使用一个网关,将真正的 XML 转换为其受限制的方言。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-18
    • 2012-08-23
    • 1970-01-01
    • 2022-12-14
    相关资源
    最近更新 更多