我目前是需要从原来的一个XML文件读取相关数据,然后将数据输出到另外一个XML格式!其中两种格式不一样,请见如下两种格式!原来的XML格式是:
<school>
<Att>
<Field> Name </Field>
<Length> 10 </Length>
<Type> Nvarchar </Type>
<Data> 张美丽 </Data>
</Att>
<Att>
<Field> Age </Field>
<Length> 3 </Length>
<Type> Int </Type>
<Data> 22 </Data>
</Att>
<Att>
<Field> BirthDay </Field>
<Length> 10 </Length>
<Type> DataTime </Type>
<Data> 1988.12.01 </Data>
</Att>
<Att>
<Field> Address </Field>
<Length> 50 </Length>
<Type> Nvarchar </Type>
<Data> XXXXXXX </Data>
</Att></school>以上是原始格式,现在需要输入如下格式:<school>
<Att>
<Name > 张美丽 </Name >
<Age > 22 </Age >
<BirthDay > 1988.12.01 </BirthDay >
<Address > XXXXXXX </Address >
</Att></school>这段输出的代码如何写,请各位帮帮忙!谢谢了!回答对了,马上给分!
<school>
<Att>
<Field> Name </Field>
<Length> 10 </Length>
<Type> Nvarchar </Type>
<Data> 张美丽 </Data>
</Att>
<Att>
<Field> Age </Field>
<Length> 3 </Length>
<Type> Int </Type>
<Data> 22 </Data>
</Att>
<Att>
<Field> BirthDay </Field>
<Length> 10 </Length>
<Type> DataTime </Type>
<Data> 1988.12.01 </Data>
</Att>
<Att>
<Field> Address </Field>
<Length> 50 </Length>
<Type> Nvarchar </Type>
<Data> XXXXXXX </Data>
</Att></school>以上是原始格式,现在需要输入如下格式:<school>
<Att>
<Name > 张美丽 </Name >
<Age > 22 </Age >
<BirthDay > 1988.12.01 </BirthDay >
<Address > XXXXXXX </Address >
</Att></school>这段输出的代码如何写,请各位帮帮忙!谢谢了!回答对了,马上给分!
import java.io.FileWriter;
import java.io.IOException;
import java.util.Iterator;import org.dom4j.DocumentException;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
import org.dom4j.Document;
import org.dom4j.io.XMLWriter;public class ReadXML {
public static void main(String[] args) {
SAXReader reader = new SAXReader();
try {
Document doc = reader.read("E:/workspace/SOA/src/net/test/MyXml.xml");
Document doc1 = DocumentHelper.createDocument();
Element root = doc.getRootElement();
Element root1 = doc1.addElement(root.getName());
Element att1 = root1.addElement("Att");
Iterator elements = root.elementIterator("Att");
while(elements.hasNext()) {
Element att = (Element)elements.next();
Element field = att1.addElement(att.elementText("Field"));
field.addText(att.elementText("Data"));
System.out.println(field.getText());
}
XMLWriter output = new XMLWriter(new FileWriter(new File("E:/workspace/SOA/src/net/test/NewFile.xml")));
output.write(doc1);
output.close();
} catch (DocumentException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
就是中文乱码了, 其他的能输出, 我找找原因。 好了再告诉你
import java.io.FileOutputStream;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Iterator;import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.SAXReader;
import org.dom4j.io.XMLWriter;public class Test { /**
* @param args
* @throws IOException
*/
public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub
//读取并解析 XML 文档
SAXReader reader=new SAXReader();
StringBuffer writesb = new StringBuffer();
writesb.append("<?xml version=\"1.0\" encoding=\"gb2312\" ?> ");
writesb.append("<school>");
try {
Document document = reader.read(new File("test.xml"));
Element root = document.getRootElement();
Document doc1 = DocumentHelper.createDocument();
Element root1 = doc1.addElement(root.getName());
Element att1 = root1.addElement("Att");
Iterator elements = root.elementIterator("Att");
while(elements.hasNext()) {
Element att = (Element)elements.next();
Element field = att1.addElement(att.elementText("Field"));
field.addText(att.elementText("Data"));
System.out.println(field.getText());
}
OutputFormat format = OutputFormat.createPrettyPrint();
format.setEncoding("gb2312");
XMLWriter writer = new XMLWriter(new FileWriter("2.xml"), format);
writer.write(doc1);
writer.close();
} catch (DocumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}}我是在楼上的基础上进行了改进,解决了中文乱码问题!
import java.io.FileWriter;
import java.io.IOException;
import java.util.Iterator;import org.dom4j.DocumentException;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.SAXReader;
import org.dom4j.Document;
import org.dom4j.io.XMLWriter;public class ReadXML {
public static void main(String[] args) {
SAXReader reader = new SAXReader();
try {
Document doc = reader.read("E:/workspace/SOA/src/net/test/MyXml.xml");
Document doc1 = DocumentHelper.createDocument();
Element root = doc.getRootElement();
Element root1 = doc1.addElement(root.getName());
Element att1 = root1.addElement("Att");
Iterator elements = root.elementIterator("Att");
while(elements.hasNext()) {
Element att = (Element)elements.next();
Element field = att1.addElement(att.elementText("Field"));
field.addText(att.elementText("Data"));
System.out.println(field.getText());
}
OutputFormat format = OutputFormat.createPrettyPrint();
format.setEncoding("GBK");
XMLWriter output = new XMLWriter(new FileWriter("E:/workspace/SOA/src/net/test/NewFile.xml"),format);
output.write(doc1);
output.close();
} catch (DocumentException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
恩, 这下可以了, 我新手,代码写的不好看, 勿见怪!