此回复为自动发出,仅用于显示而已,并无任何其他特殊作用
楼主【heliangtai】截止到2008-07-09 16:04:39的历史汇总数据(不包括此帖):
发帖的总数量:0 发帖的总分数:0 每贴平均分数:0
回帖的总数量:0 得分贴总数量:0 回帖的得分率:0%
结贴的总数量:0 结贴的总分数:0
无满意结贴数:0 无满意结贴分:0
未结的帖子数:0 未结的总分数:0
结贴的百分比:---------------------结分的百分比:---------------------
无满意结贴率:---------------------无满意结分率:---------------------
如何结贴请参考这里:http://topic.csdn.net/u/20080501/09/ef7ba1b3-6466-49f6-9d92-36fe6d471dd1.html
楼主【heliangtai】截止到2008-07-09 16:04:39的历史汇总数据(不包括此帖):
发帖的总数量:0 发帖的总分数:0 每贴平均分数:0
回帖的总数量:0 得分贴总数量:0 回帖的得分率:0%
结贴的总数量:0 结贴的总分数:0
无满意结贴数:0 无满意结贴分:0
未结的帖子数:0 未结的总分数:0
结贴的百分比:---------------------结分的百分比:---------------------
无满意结贴率:---------------------无满意结分率:---------------------
如何结贴请参考这里:http://topic.csdn.net/u/20080501/09/ef7ba1b3-6466-49f6-9d92-36fe6d471dd1.html
<?xml version="1.0" encoding="gb2312"?>
<notes>
<note date="2007-4-12">
<from>小红</from>
<to>小林</to>
<message>周末一起去吃火锅呀</message>
</note>
</notes>
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.xml.sax.SAXException;
class JieXiXML
{
public static void main(String[] args)
{
try{
DocumentBuilderFactory factory =DocumentBuilderFactory.newInstance();
DocumentBuilder builder=factory.newDocumentBuilder();
File f=new File("note.xml");
InputStream is=new FileInputStream(f);
Document doc=builder.parse(is);
Element root=doc.getDocumentElement();
NodeList notes=root.getChildNodes(); for(int i=0;i<notes.getLength();i++)
{
Node note=notes.item(i);
if(note.getNodeType()==Node.ELEMENT_NODE)
{
String date =note.getAttributes().getNamedItem("date").getNodeValue();
System.out.println(date);
for(Node node=note.getFirstChild();node!=null;node=node.getNextSibling())
{
if(node.getNodeType()==Node.ELEMENT_NODE)
{
if(node.getNodeName().equals("from"))
{
String from=node.getFirstChild().getNodeValue();
System.out.println(from);
}
if(node.getNodeName().equals("to"))
{
String to=node.getFirstChild().getNodeValue();
System.out.println(to);
}
if(node.getNodeName().equals("message"))
{
String message=node.getFirstChild().getNodeValue();
System.out.println(message);
}
}
}
}
}
}
catch(ParserConfigurationException e)
{
e.printStackTrace();
}
catch(SAXException e)
{
e.printStackTrace();
}
catch(IOException e)
{
e.printStackTrace();
}
}
}
import java.io.FileNotFoundException;import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;public class Test { /**
* @param args
* @throws DocumentException
* @throws FileNotFoundException
*/
public static void main(String[] args) throws FileNotFoundException, DocumentException {
// TODO Auto-generated method stub
Document document=parse();
Element root=document.getRootElement();
java.util.List persons=root.elements("person");
System.out.println(persons.size());
for(java.util.Iterator i=root.elementIterator();i.hasNext();){
Element person=(Element)i.next();
Element name=person.element("name");
Element company=person.element("company");
Element school=person.element("school");
System.out.println("name="+name.getData()+",age="+name.attributeValue("age")+",sex="+name.attributeValue("sex"));
System.out.println("company="+company.getData()+",addr="+company.attributeValue("addr")+",othername="+company.attributeValue("othername"));
System.out.println("school="+school.getData()+",addr="+school.attributeValue("addr")+",master="+school.attributeValue("master"));
}
}
public static Document parse() throws DocumentException, FileNotFoundException {
SAXReader reader = new SAXReader();
FileInputStream in=new FileInputStream("persons.xml");
Document document = reader.read(in);
return document;
}}其中我把你的xml文件的root元素去掉了(主要是嫌麻烦),变成一下:
<?xml version="1.0" encoding="UTF-8"?>
<persons>
<person>
<name age="24" sex="男">何良太 </name>
<company addr="浙江杭州西湖区黄姑山路3号" othername="永程科技股份公司">浙江西安交大龙山软件公司 </company>
<school addr="安徽省巢湖市" master="张三">巢湖学院 </school>
</person>
<person>
<name age="20" sex="女">张红燕 </name>
<company addr="北京市东城区四环外线" othername="中国移动">中国移动通信有限公司 </company>
<school addr="安徽省芜湖市" master="李四">安徽师范大学 </school>
</person>
</persons>如果你需要自己加上,程序上只是多了一个层次而已
我自己的解决方案的主要代码如下:(通过遍历现实的)
SAXReader saxReader = new SAXReader();
Document document = saxReader.read(Thread.currentThread().getContextClassLoader().getResourceAsStream(filename));
//使用绝对路径
//List elementList=document.selectNodes("root/persons/person");
//使用相对路径
List elementList=document.selectNodes("//person");
Iterator iterator=elementList.iterator();
while(iterator.hasNext()){
Element element=(Element)iterator.next();
//遍历下面的name节点的值与属性
Iterator nameIterator=element.elementIterator("name");
while(nameIterator.hasNext()){
Element attributeElement=(Element)nameIterator.next();
System.out.println("name="+attributeElement.getText());
System.out.println("age="+attributeElement.attributeValue("age"));
System.out.println("sex="+attributeElement.attributeValue("sex"));
}
//遍历下面的company节点的值与属性
Iterator companyIterator=element.elementIterator("company");
while(companyIterator.hasNext()){
Element attributeElement=(Element)companyIterator.next();
System.out.println("公司名称="+attributeElement.getText());
System.out.println("公司地址="+attributeElement.attributeValue("addr"));
System.out.println("公司别名="+attributeElement.attributeValue("othername"));
}
//遍历下面的school节点的值与属性
Iterator schoolIterator=element.elementIterator("school");
while(schoolIterator.hasNext()){
Element attributeElement=(Element)schoolIterator.next();
System.out.println("毕业学校="+attributeElement.getText());
System.out.println("学期地址="+attributeElement.attributeValue("addr"));
System.out.println("大学校长="+attributeElement.attributeValue("master"));
}
System.out.println("=========================================");
}