我正在使用javax.xml.transform.Transformer
类将 DOM 源转换为 XML 字符串。我在 DOM 树中有一些空元素,这些元素成为我不想要的一个标签。
我如何防止<sampletag></sampletag>
成为<sampletag/>
?
我正在使用javax.xml.transform.Transformer
类将 DOM 源转换为 XML 字符串。我在 DOM 树中有一些空元素,这些元素成为我不想要的一个标签。
我如何防止<sampletag></sampletag>
成为<sampletag/>
?
我有同样的问题。这是获得该结果的函数。
public static String fixClosedTag(String rawXml){
LinkedList<String[]> listTags = new LinkedList<String[]>();
String splittato[] = rawXml.split("<");
String prettyXML="";
int counter = 0;
for(int x=0;x<splittato.length;x++){
String tmpStr = splittato[x];
int indexEnd = tmpStr.indexOf("/>");
if(indexEnd>-1){
String nameTag = tmpStr.substring(0, (indexEnd));
String oldTag = "<"+ nameTag +"/>";
String newTag = "<"+ nameTag +"></"+ nameTag +">";
String tag[]=new String [2];
tag[0] = oldTag;
tag[1] = newTag;
listTags.add(tag);
}
}
prettyXML = rawXml;
for(int y=0;y<listTags.size();y++){
String el[] = listTags.get(y);
prettyXML = prettyXML.replaceAll(el[0],el[1]);
}
return prettyXML;
}
如果您通过发送它的过程需要元素不要自关闭(它不应该),您可以通过在其中放置内容来强制元素不要自关闭。
PDF 转换器如何处理 XML 注释或处理指令?
<sampletag>!<--Sample Comment--></sampletag>
<sampletag><?SampleProcessingInstruction?></sampletag>
如果您想控制 XML 的格式,请提供您自己的ContentHandler
以将 XML 美化为“文本”。接收端(除非是人类)是否接收<name></name>
或<name/>
- 它们都意味着同一件事,这应该无关紧要。
这两种表示形式等价于 XML 解析器,所以没关系。
如果您想使用 XML 解析器以外的任何东西来处理 XML,那么最终您将需要做大量的工作和一个 XML 解析器。
我在下面尝试防止将空标签转换为单个标签:
变压器 tf = TransformerFactory.newInstance().newTransformer(); tf.setOutputProperty(OutputKeys.METHOD,"html")
它保留空标签。