日期:2014-05-18  浏览次数:20763 次

为什么我修改的xml里面有黑色方块?
如题。求解决。

public static void update() {
String oldStr = "d:/a.xml";
String newStr = "d:/b.xml";
Document document = null;
try {
SAXReader saxReader = new SAXReader(); // 用来读取xml文档
document = saxReader.read(new File(oldStr)); // 读取xml文档
List list = document.selectNodes("list/name");// 用xpath查找节点book的内容
Iterator iter = list.iterator();
while (iter.hasNext()) {
Element element = (Element) iter.next();
element.setText("张三");// 设置相应的内容
}
} catch (Exception e) {
e.printStackTrace();
}
try {
OutputFormat format = OutputFormat.createPrettyPrint();
format.setEncoding("utf-8");
XMLWriter writer = new XMLWriter(new FileWriter(new File(newStr)),format);
writer.write(document);
writer.close();
} catch (Exception ex) {
ex.printStackTrace();
}
}

------解决方案--------------------
试试从根节点开始读取
Document document = saxReader.read(new File(path));
// 根节点
Element root = document.getRootElement();

// 遍历根结点(paths)的所有孩子节点(肯定是path节点)
for (Iterator iter = root.elementIterator(); iter.hasNext();) {
Element element = (Element) iter.next();
String name = "";
String path_ = "";
// 遍历path结点的所有孩子节点(即name,path,folder),并进行处理
for (Iterator iterInner = element.elementIterator(); iterInner
.hasNext();) {

Element elementInner = (Element) iterInner.next();
if (elementInner.getName().equals("name")) {
name = elementInner.getText();
}
if (elementInner.getName().equals("path")) {
path_ = elementInner.getText();
}
map.put(name,path_);
}
}
然后取的name和path的值自己修改