我已经看到有关同一问题的其他问题,但仍然出现错误。 Hier是我尝试修改exosting xml文件的一小部分代码。但是它会修改文本中的某些字符。
fetchItems()
我尝试修改的一个小型xml文件(在这种情况下,只需复制)
$newData = $this->Bid_Model->fetchItems('accounts');
if($users == $uType){
$announce_image = $this->upload->data('file_name');
$data = []; // new empty array
foreach($newData as $user):
$userIDs = $user->user_id;
$data[] = array(
'title' => $title,
'user_type' => $users,
'content' => $content,
'image' => $announce_image,
'admin_user_id' => $id,
'user_id' => $userIDs
);
endforeach;
$this->Bid_Model->insertItems('announcements', $data);
}
程序启动后,我得到以下信息:
import org.jdom2.Document;
import org.jdom2.JDOMException;
import org.jdom2.input.SAXBuilder;
import org.jdom2.output.Format;
import org.jdom2.output.XMLOutputter;
import java.io.FileOutputStream;
import java.io.IOException;
public class ModyfyXml {
public static void main(String[] args) throws JDOMException, IOException {
try {
SAXBuilder sax = new SAXBuilder();
Document doc = sax.build("F:\\c\\test.xml");
XMLOutputter xmlOutput = new XMLOutputter();
Format format = Format.getPrettyFormat();
format.setEncoding("UTF-8");
xmlOutput.setFormat(format);
xmlOutput.output(doc, (new FileOutputStream("F:\\c\\test2.xml")));
}catch (IOException io) {
io.printStackTrace();
} catch (JDOMException e) {
e.printStackTrace();
}
}}
某些中文字符无法正确转换
答案 0 :(得分:1)
Dang,我从没注意到JDOM 2中的这个错误。
对于任何非BMP字符,您将获得相同的结果。您可以尝试使用最近几年的表情符号躁狂症,看看您得到的结果是否相同。
之所以发生,是因为自动为UTF-任何编码设置了转义策略。它所做的是相当错误的。
如果您将策略替换为不能保留XML保留字符之外的任何内容的策略,该问题将得到解决:
format.setEscapeStrategy((c) -> false);