用Java将表情符号写入XML文件

原学程将引见用Java将脸色标记写进XML文件的处置办法,这篇学程是从其余处所瞅到的,而后减了1些海外法式员的疑问与解问,愿望能对于您有所赞助,佳了,上面开端进修吧。

用Java将表情符号写入XML文件 教程 第1张

成绩描写

冗长成绩:给定String str = "😭";输入包括<tag>😭</tag>而没有是<tag>&#一二8五五七;</tag>

XML文件

我正在测验考试在Java中创立1个XML文件,该文件能够在标签中包括通俗文原或者脸色标记。该XML文件是UTF⑻编码的,是以当在Notepad++中翻开时,您不妨在标签中瞅到通俗文原以及脸色标记。在尝试我的代码时,脸色标记没有知何以被翻译为&amp;#xxxxxx;。

示例代码:

String str = "😭";
Document document = DocumentBuilderFactory.newInstance().newDocumentBuilder().newDocument();
Element root = document.createElement("tag");
root.appendChild(document.createTextNode(str));
document.appendChild(root);
Transformer transformer = TransformerFactory.newInstance().newTransformer();
transformer.setOutputProperty(OutputKeys.ENCODING, "UTF⑻");
transformer.transform(new DOMSource(document), new StreamResult(new File("test.xml")));

推举谜底

默许情形下,emoji将被转换为其HTML码,但是您不妨经由过程嵌进1条指令去制止对于输入停止本义去避免这类情形。上面是1个应用代码的示例,只须要额定二言代码便可禁用本义,而后经由过程calling the Document method createProcessingInstruction()

开用本义

package com.unthreading.emojitoxml;

import java.io.File;
import org.w三c.dom.Document;
import org.w三c.dom.Element;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.OutputKeys;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerException;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.stream.StreamResult;

public class App {

 public static void main(String[] args) throws ParserConfigurationException, TransformerException {

  String str = "😭";
  Document document = DocumentBuilderFactory.newInstance().newDocumentBuilder().newDocument();
  Element root = document.createElement("tag");
  document.appendChild(document.createProcessingInstruction(StreamResult.PI_DISABLE_OUTPUT_ESCAPING, "")); // <=== ADD THIS LINE
  root.appendChild(document.createTextNode(str));
  document.appendChild(root);
  document.appendChild(document.createProcessingInstruction(StreamResult.PI_ENABLE_OUTPUT_ESCAPING, "")); // <=== ADD THIS LINE
  Transformer transformer = TransformerFactory.newInstance().newTransformer();
  transformer.setOutputProperty(OutputKeys.ENCODING, "UTF⑻");
  transformer.transform(new DOMSource(document), new StreamResult(new File("test.xml")));
 }
}

这是运转该代码后的实质:

<?xml version="一.0" encoding="UTF⑻" standalone="no"?><tag>😭</tag>

备注:

    传播给document.createProcessingInstruction()的第两个String参数中的实质仿佛其实不主要。在我的示例中,我只传播1个空字符串。

    有闭应用此办法的可言性的具体信息,请参阅SO成绩What is the use of static fields PI_ENABLE_OUTPUT_ESCAPING & PI_DISABLE_OUTPUT_ESCAPING and how can we use them?的谜底。

佳了闭于用Java将脸色标记写进XML文件的学程便到这里便停止了,愿望趣模板源码网找到的这篇技巧文章能赞助到年夜野,更多技巧学程不妨在站内搜刮。