java 如何防止xml Transformer将空标签转换为单个标签

ssm49v7z  于 2024-01-05  发布在  Java
关注(0)|答案(5)|浏览(234)

我使用javax.xml.transform.Transformer类将DOM源代码转换为XML字符串。我在DOM树中有一些空元素,这些元素变成了我不想要的标记。
如何防止<sampletag></sampletag>变成<sampletag/>

krugob8w

krugob8w1#

我也有同样的问题。这是得到那个结果的函数。

  1. public static String fixClosedTag(String rawXml){
  2. LinkedList<String[]> listTags = new LinkedList<String[]>();
  3. String splittato[] = rawXml.split("<");
  4. String prettyXML="";
  5. int counter = 0;
  6. for(int x=0;x<splittato.length;x++){
  7. String tmpStr = splittato[x];
  8. int indexEnd = tmpStr.indexOf("/>");
  9. if(indexEnd>-1){
  10. String nameTag = tmpStr.substring(0, (indexEnd));
  11. String oldTag = "<"+ nameTag +"/>";
  12. String newTag = "<"+ nameTag +"></"+ nameTag +">";
  13. String tag[]=new String [2];
  14. tag[0] = oldTag;
  15. tag[1] = newTag;
  16. listTags.add(tag);
  17. }
  18. }
  19. prettyXML = rawXml;
  20. for(int y=0;y<listTags.size();y++){
  21. String el[] = listTags.get(y);
  22. prettyXML = prettyXML.replaceAll(el[0],el[1]);
  23. }
  24. return prettyXML;
  25. }

字符串

展开查看全部
j7dteeu8

j7dteeu82#

如果你想控制XML的格式,提供你自己的ContentHandler来将XML修饰成“文本”。对于接收端(除非是人类)来说,它接收的是<name></name>还是<name/>都没有关系-它们都意味着同样的事情。

aydmsdu9

aydmsdu93#

这两种表示形式等价于XML解析器,所以这并不重要。
如果您想使用XML解析器以外的任何东西来处理XML,那么无论如何,您最终都会做大量的工作并得到一个XML解析器。

rwqw0loc

rwqw0loc4#

如果您通过 NEEDS 发送的进程不需要自关闭元素(它不应该),您可以通过将内容放置在元素中来强制元素不自关闭。
PDF转换器如何处理XML注解或处理指令?
第一个月
<sampletag><?SampleProcessingInstruction?></sampletag>

wgmfuz8q

wgmfuz8q5#

我在下面尝试防止将空标签转换为单个标签:
Transformer tf = transformerFactory.newInstance().newTransformer(); tf.setOutputProperty(OutputKeys.METHOD,“html”)
它保留了空标签。

相关问题