import java.io.File;
import java.util.ArrayList;
import java.util.List;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
public class DOM4JTest
{
private static ArrayList<PhoneInformation> phoneInformations = new ArrayList<PhoneInformation>();
public static void main(String[] args)
{
SAXReader reader = new SAXReader();
try
{
// 通过read方法加载xml文件,获取document对象
Document document = reader.read(new File("src/scp_telephone_test/device.xml"));
// 通过document对象获取根节点
Element deviceElement = document.getRootElement();
// 获取手机节点
List<Element> phoneNodes = deviceElement.elements();
// phoneNodes判空
for (Element phoneNode : phoneNodes)
{
List<Element> phoneAttributes = phoneNode.elements();
for (Element phoneAttribute : phoneAttributes)
{
System.out.println(phoneAttribute.getName() + ":" + phoneAttribute.getStringValue());
}
}
}
catch(DocumentException e)
{
e.printStackTrace();
}
}
}
<?xml version="1.0" encoding="UTF-8"?>
<root>
<device>
<id>device_id_1</id>
<ip>device_ip_1</ip>
<number>device_number_1</number>
<name>联通</name>
</device>
<device>
<id>device_id_2</id>
<ip>device_id_2</ip>
<number>device_number_2</number>
<name>移动</name>
</device>
<device>
<id>device_id_3</id>
<ip>device_ip_3</ip>
<number>device_number_3</number>
<name>电信</name>
</device>
</root>
到获取属性节点基本上其他地方也都有介绍,这里主要想记录一下,xml文件的格式会影响解析方法是否成功。
如上所示,在<device></device>中,都是以<id></id>这种格式存在的属性,那么只能以下例代码来获得值。
List<Element> phoneAttributes = phoneNode.elements();
for (Element phoneAttribute : phoneAttributes)
{
System.out.println(phoneAttribute.getName() + ":" + phoneAttribute.getStringValue());
}
如果是<device id="123">这种形式,那么可以利用attribute来获取,如 .attributeValue( "id") , 总之,如果你想用attribute来进行解析xml文件,那么一定要注意xml文件的格式。 |