tôi nhận được ngoại lệ sau khi cố gắng truy cập vào bất kỳ nút của một tài liệu xml phân tích cú pháp trên dom4j:Sử dụng XPath trong Dom4j
Exception in thread "main" java.lang.NoClassDefFoundError: org/jaxen/JaxenException
at org.dom4j.DocumentFactory.createXPath(DocumentFactory.java:230)
at org.dom4j.tree.AbstractNode.createXPath(AbstractNode.java:207)
at org.dom4j.tree.AbstractNode.selectNodes(AbstractNode.java:164)
at xmlparser.LevelsExtractor.findI(LevelsExtractor.java:73)
at xmlparser.Main.main(Main.java:33)
Tôi biết rằng các công trình phân tích cú pháp, vì tôi có thể có in phân tích cú pháp ra xml tài liệu hoặc lưu nó vào tập tin. Đây là mã tôi đang sử dụng.
Để phân tích tài liệu:
public class Parser {
public Document parseWithSAX(File aFile) throws DocumentException {
SAXReader xmlReader = new SAXReader();
Document doc = xmlReader.read(aFile);
return doc;
}
Để thử để có được một nút Tôi đã thử các dòng sau, tất cả đều tạo ra các lỗi tương tự:
List list = doc.selectNodes("");
QName qn = new QName("////Token/text()='Introduction'");
Element el = doc.selectSingleNode("////Token/text()='Introduction'");
Node node = doc.selectSingleNode("/DOCUMENT/PAGE/TEXT/TOKEN/text()= 'Introduction'");
này sẽ in ra xml doc mà tôi giả định có nghĩa là doc (đó là tài liệu xml được phân tích cú pháp) chứa những gì cần.
System.out.println(doc.asXML());
Tôi thực sự đánh giá cao sự trợ giúp của bạn!
Tôi nghĩ bản phân phối cũng bao gồm lib jaxen, nhưng tôi đã bao gồm bình bây giờ chỉ để xem và nó đã xóa thông báo lỗi. Thật không may nó đã cho tôi một cái mới. Vì vậy, bây giờ nó than phiền ở khung kết thúc của một khối mã bằng cách sử dụng tài liệu được phân tích cú pháp rằng "nó đến cuối tệp trong khi phân tích cú pháp." Bây giờ điều này xảy ra ngay cả trên mã mà đi qua cây thông qua vòng lặp (mà làm việc trước đó). Tôi nghĩ rằng điều này có nghĩa là bình jaxon mới đang rối tung với việc phân tích cú pháp, nhưng tôi vẫn có thể phân tích cú pháp và sau đó in lại tập tin, vì vậy dường như không phải như vậy. –
NoClassDefFoundException chỉ có thể có nghĩa là bạn không có lớp cần thiết trên đường dẫn lớp của bạn hoặc có phiên bản sai của điều đó. Hãy kiểm tra lại đường dẫn lớp học của bạn. Loại bỏ các lọ không cần thiết và chỉ thêm những cái được sử dụng. –
lọ duy nhất tôi đã có ban đầu là dom4j-1.6.1.jar, trong đó đã cho tôi lỗi lớp học. Tôi đã thêm jaxen-1.1.1.jar đã loại bỏ lỗi def của lớp và đã cho tôi "kết thúc tệp trong khi phân tích cú pháp lỗi". Cảm ơn sự giúp đỡ của bạn và phản ứng nhanh Superfilin. –