当前位置: 首页 > 知识库问答 >
问题:

防止空xml元素转换为自动关闭元素

佘俊茂
2023-03-14

我正在使用Xerces库在文档中编写XML。为此,我使用OutputFormat类在XMLSerializer中传递OutputFormat的对象。但我所有的空xml元素都转换为自动关闭的xml元素。

我想要这个:

<Company Name="Dummy">
</Company>

但它的到来就像

<Company Name="Dummy" />

我尝试了以下代码:

try {
    //print
    OutputFormat format = new OutputFormat(dom,"iso-8859-1",true);          
    //to generate output to console use this serializer

    XMLSerializer serializer = new XMLSerializer(System.out, format);           
    serializer.serialize(dom);

} catch(IOException ie) {
        ie.printStackTrace();
}

有人能帮我解决这个问题吗。

谢谢

共有2个答案

徐正雅
2023-03-14

我知道的大多数序列化程序都不允许您选择是否在输出中使用空元素标记,原因很简单,任何理智的XML使用者都不应该关心是否使用了空元素标记。如果你真的在乎,并且不是疯了,这将有助于解释为什么你在乎。

牛迪
2023-03-14

如果您愿意使用其他API来解决问题,请尝试以下方法

import javax.xml.stream.XMLOutputFactory;
import javax.xml.stream.XMLStreamWriter;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stax.StAXResult;

import org.w3c.dom.Document;

public class XmlWritter {

    public static void main(String[] args) throws Exception {
        Document doc = ...
        XMLStreamWriter writer = XMLOutputFactory.newFactory().createXMLStreamWriter(System.out);
        Transformer transformer = TransformerFactory.newInstance().newTransformer();
        transformer.transform(new DOMSource(doc), new StAXResult(writer));
    }

}
 类似资料:
  • 我一直在尝试实现这个共享元素转换,并在单击转换时不断出现“java.lang.IllegalArgumentException:共享元素不能为null”错误。请帮忙。 这是下面给出的MainActive onCreate方法。请检查我的代码。 这是recyclerView的onClickListener。 图像的过渡名称相同。这里的bug修复在使用共享元素的活动转换中出现问题并不是问题所在。 我卡

  • 问题内容: 我目前在UI测试自动化的元素上放置了一些ID。这些ID仅用于测试。我应该添加数据属性,而不是使其对将来的开发人员更具可读性(data-testHandle =“ mybutton”),还是应该坚持使用ID。 w3.org说: 定制数据属性旨在存储页面或应用程序专用的定制数据,对于这些数据,没有更多合适的属性或元素。 我倾向于保留ID,但是我中的某些人认为将来的开发人员会认为ID未被使用

  • 问题内容: 能够将常规元素临时转换为会非常有用。例如,假设我有一个想要翻转的样式。我想动态创建画布,将其“渲染” 到画布中,隐藏原始元素并为画布设置动画。 能做到吗 问题答案: 抱歉,浏览器无法将HTML渲染到画布中。 如果可能的话,这将带来潜在的安全风险,因为HTML可以包含来自第三方站点的内容(尤其是图像和iframe)。如果可以将HTML内容转换为图像,然后读取图像数据,则有可能从其他站点提

  • 问题内容: 我有一个模态框窗口(弹出窗口),其中包含一个iframe, 并且在该 iframe中 有一个可滚动的 div 。 当我滚动iframe的内部DIV,并且达到其上限或下限时, 浏览器本身的窗口就会开始滚动。这是 不想要的行为 。 我已经尝试过类似的操作, 当鼠标进入弹出框区域时,该操作会在onMouseEnter时终止主窗口滚动: e.preventDefault()由于某些原因无法正常

  • 问题内容: 我有这个嵌套的golang结构: 当我使用值对其进行初始化并进行封送处理时,它看起来像这样: 我怎样才能摆脱的结束标记和,所以它只是看起来像? 问题答案: 没有内容 的 元素和 结束标记 在XML级别上没有区别: 和一个 空元素标签 : 要控制使用哪种格式,您必须将数据视为文本而不是XML,但最好不要担心没有区别的区别。 [为完整性而添加] …不明确和过时的建议 为了实现互操作性,对于