62,620
社区成员
发帖
与我相关
我的任务
分享String fileName = "e:\\temp\\test.xml";
String nodeName ="/Workbook/Worksheet";//获得Worksheet元素
Document document = new SAXReader().read(new File(fileName));
System.out.println("document name="+document.getName());
List nodes = document.selectNodes(nodeName);
System.out.println("nodes size="+nodes.size());
System.out.println("nodes[0]="+nodes.get(0));<?xml version="1.0" encoding="UTF-8"?>
<classes name="网络">
<student name="张三">
张三是个好学生
</student>
<student name="李四">
李四也是个好学生
</student>
</classes>package testXML;
import java.io.InputStream;
import java.util.Iterator;
import java.util.List;
import org.dom4j.Document;
import org.dom4j.Element;
import org.dom4j.Node;
import org.dom4j.io.SAXReader;
public class TestXML {
public static void main(String[] args) throws Exception {
// String fileName = "Book1.xml";//excel另存为xml表格
String fileName = "classes.xml";//自己建立的一个xml
// String xpath = "/Workbook/Worksheet";//针对Book1.xml表格的xpath
String xpath = "/classes/student";//针对自建classes.xml的xpath
InputStream resourceAsStream = TestXML.class.getResourceAsStream(fileName);
Document document = new SAXReader().read(resourceAsStream);
Element rootElement = document.getRootElement();
System.out.println(rootElement.getName());
Iterator iterator = rootElement.elementIterator();
while (iterator.hasNext()) {
Element element = (Element ) iterator.next();
System.out.println(element.getName());
}
List<Node> nodes = document.selectNodes(xpath);
System.out.println("length="+nodes.size());
for (Node node : nodes) {
System.out.println(node.asXML());
}
}
}
如果是对自建的classes.xml使用xpath进行解析,得到如下结果:
classes
student
student
length=2
<student name="张三" age="10">
张三是个好学生
</student>
<student name="李四" age="20">
李四也是个好学生
</student>
如果是对excel另存为xml表格(Book1.xml)的文件使用xpath进行解析,结果是这样:
Workbook
DocumentProperties
ExcelWorkbook
Styles
Worksheet
Worksheet
Worksheet
length=0
其中Worksheet是excel生成的xml表格里面有的element,明明能看得到,但是就是试图通过xpath获取其节点的时候,就是获取不到
自建的classes.xml代码如下
<?xml version="1.0" encoding="UTF-8"?>
<classes name="网络">
<student name="张三" age="10">
张三是个好学生
</student>
<student name="李四" age="20">
李四也是个好学生
</student>
</classes>
excel导出的Book1.xml文件如下
<?xml version="1.0"?>
<?mso-application progid="Excel.Sheet"?>
<Workbook xmlns="urn:schemas-microsoft-com:office:spreadsheet"
xmlns:o="urn:schemas-microsoft-com:office:office"
xmlns:x="urn:schemas-microsoft-com:office:excel"
xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet"
xmlns:html="http://www.w3.org/TR/REC-html40">
<DocumentProperties xmlns="urn:schemas-microsoft-com:office:office">
<Author>ruhai</Author>
<LastAuthor>ruhai</LastAuthor>
<Created>2013-06-23T00:32:17Z</Created>
<Version>11.9999</Version>
</DocumentProperties>
<ExcelWorkbook xmlns="urn:schemas-microsoft-com:office:excel">
<WindowHeight>8280</WindowHeight>
<WindowWidth>18315</WindowWidth>
<WindowTopX>360</WindowTopX>
<WindowTopY>60</WindowTopY>
<ProtectStructure>False</ProtectStructure>
<ProtectWindows>False</ProtectWindows>
</ExcelWorkbook>
<Styles>
<Style ss:ID="Default" ss:Name="Normal">
<Alignment ss:Vertical="Center"/>
<Borders/>
<Font ss:FontName="宋体" x:CharSet="134" ss:Size="12"/>
<Interior/>
<NumberFormat/>
<Protection/>
</Style>
<Style ss:ID="s22">
<Alignment ss:Horizontal="Center" ss:Vertical="Center"/>
</Style>
</Styles>
<Worksheet ss:Name="classes">
<Table ss:ExpandedColumnCount="4" ss:ExpandedRowCount="5" x:FullColumns="1"
x:FullRows="1" ss:DefaultColumnWidth="54" ss:DefaultRowHeight="14.25">
<Column ss:Index="4" ss:AutoFitWidth="0" ss:Width="75"/>
<Row>
<Cell ss:MergeAcross="3" ss:StyleID="s22"><Data ss:Type="String">班级表</Data></Cell>
</Row>
<Row>
<Cell><Data ss:Type="String">序号</Data></Cell>
<Cell><Data ss:Type="String">name</Data></Cell>
<Cell><Data ss:Type="String">年龄</Data></Cell>
<Cell><Data ss:Type="String">desc</Data></Cell>
</Row>
<Row>
<Cell><Data ss:Type="Number">1</Data></Cell>
<Cell><Data ss:Type="String">张三</Data></Cell>
<Cell><Data ss:Type="Number">10</Data></Cell>
<Cell><Data ss:Type="String">张三很好</Data></Cell>
</Row>
<Row>
<Cell><Data ss:Type="Number">2</Data></Cell>
<Cell><Data ss:Type="String">李四</Data></Cell>
<Cell><Data ss:Type="Number">20</Data></Cell>
<Cell><Data ss:Type="String">李四也不错</Data></Cell>
</Row>
<Row>
<Cell><Data ss:Type="Number">3</Data></Cell>
<Cell><Data ss:Type="String">王五</Data></Cell>
<Cell><Data ss:Type="Number">34</Data></Cell>
<Cell><Data ss:Type="String">王五年纪大了</Data></Cell>
</Row>
</Table>
<WorksheetOptions xmlns="urn:schemas-microsoft-com:office:excel">
<Selected/>
<Panes>
<Pane>
<Number>3</Number>
<ActiveRow>10</ActiveRow>
<ActiveCol>1</ActiveCol>
</Pane>
</Panes>
<ProtectObjects>False</ProtectObjects>
<ProtectScenarios>False</ProtectScenarios>
</WorksheetOptions>
</Worksheet>
<Worksheet ss:Name="Sheet2">
<Table ss:ExpandedColumnCount="0" ss:ExpandedRowCount="0" x:FullColumns="1"
x:FullRows="1" ss:DefaultColumnWidth="54" ss:DefaultRowHeight="14.25"/>
<WorksheetOptions xmlns="urn:schemas-microsoft-com:office:excel">
<ProtectObjects>False</ProtectObjects>
<ProtectScenarios>False</ProtectScenarios>
</WorksheetOptions>
</Worksheet>
<Worksheet ss:Name="Sheet3">
<Table ss:ExpandedColumnCount="0" ss:ExpandedRowCount="0" x:FullColumns="1"
x:FullRows="1" ss:DefaultColumnWidth="54" ss:DefaultRowHeight="14.25"/>
<WorksheetOptions xmlns="urn:schemas-microsoft-com:office:excel">
<ProtectObjects>False</ProtectObjects>
<ProtectScenarios>False</ProtectScenarios>
</WorksheetOptions>
</Worksheet>
</Workbook>