如何解析本地和线上XML文件获取相应的内容

一、使用Dom解析本地XML 
1、本地XML文件为:test.xml

<?xml version="1.0" encoding="UTF-8"?>
<Books>
  <Book id="1"> <bookName>think in java</bookName> <bookAuthor>张三</bookAuthor> <bookISBN>家</bookISBN> <bookPrice>75.00</bookPrice> </Book> <Book id="2"> <bookName>java核心基础</bookName> <bookAuthor>王二</bookAuthor> <bookISBN>家</bookISBN> <bookPrice>65.00</bookPrice> </Book> <Book id="3"> <bookName>Oracle</bookName> <bookAuthor>李四</bookAuthor> <bookISBN>家</bookISBN> <bookPrice>75.00</bookPrice> </Book> </Books>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21

2、建立book类储存解析出来的内容

package com.yc.domain;

public class Book { private int id; private String bookName; private String bookAuthor; private String bookISBN; private String bookPrice; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getBookName() { return bookName; } public void setBookName(String bookName) { this.bookName = bookName; } public String getBookAuthor() { return bookAuthor; } public void setBookAuthor(String bookAuthor) { this.bookAuthor = bookAuthor; } public String getBookISBN() { return bookISBN; } public void setBookISBN(String bookISBN) { this.bookISBN = bookISBN; } public String getBookPrice() { return bookPrice; } public void setBookPrice(String bookPrice) { this.bookPrice = bookPrice; } @Override public String toString() { return "Book [id=" + id + ", bookName=" + bookName + ", bookAuthor=" + bookAuthor + ", bookISBN=" + bookISBN + ", bookPrice=" + bookPrice + "]"; } } 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48

3、使用Dom解析:文件名为TestDom.Java

package com.yc.utils;

import java.io.File; import java.io.IOException; import java.util.ArrayList; import java.util.List; 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; import com.yc.domain.Book; public class TestDom { public List<Book> getBook(File file){ List<Book> bookList=new ArrayList<Book>(); try { //创建一个文档构建工厂 DocumentBuilderFactory factory=DocumentBuilderFactory.newInstance(); //通过工厂生产DocumentBuilder对象 DocumentBuilder builder=factory.newDocumentBuilder(); //将指定file的内容解析 返回一个Document的对象 Document doc=builder.parse(file); Element element=doc.getDocumentElement();//获取根元素 //System.out.println(element); NodeList nodeList=doc.getElementsByTagName("Book"); //System.out.println(nodeList.getLength()); int len=nodeList.getLength(); for (int i = 0; i < len; i++) { Book book=new Book(); Node node=nodeList.item(i); book.setId(Integer.parseInt(node.getAttributes().getNamedItem("id").getNodeValue())); int len2=nodeList.item(i).getChildNodes().getLength(); for (int j = 0; j < len2; j++) { Node node1=nodeList.item(i).getChildNodes().item(j); if(node1.getNodeType()==1){ String content=node1.getFirstChild().getNodeValue(); String nodeName=node1.getNodeName(); switch (nodeName) { case "bookName": book.setBookName(content); break; case "bookAuthor": book.setBookAuthor(content); break; case "bookISBN": book.setBookISBN(content); break; case "bookPrice": book.setBookPrice(content); break; default: break; } } } bookList.add(book); } } catch (ParserConfigurationException e) { e.printStackTrace(); } catch (SAXException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } return bookList; } public static void main(String[] args) { TestDom td=new TestDom(); File file=new File("test.xml"); List<Book> list=td.getBook(file); for (int i = 0; i <list.size(); i++) { Book book=list.get(i); System.out.println(book.toString()); } } } 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81
  • 82
  • 83
  • 84
  • 85
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81
  • 82
  • 83
  • 84
  • 85

4、解析结果:

Book [id=1, bookName=think in java, bookAuthor=张三, bookISBN=家, bookPrice=75.00] Book [id=2, bookName=java核心基础, bookAuthor=王二, bookISBN=家, bookPrice=65.00] Book [id=3, bookName=Oracle, bookAuthor=李四, bookISBN=家, bookPrice=75.00] 
  • 1
  • 2
  • 3
  • 4
  • 1
  • 2
  • 3
  • 4

二、使用Dom4j解析本地XML文件 
其他同上只是换用不同的解析方法: 
本次使用Dom4j解析本地文件test.xml

package com.yc.utils;

import java.io.File; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import org.dom4j.Attribute; import org.dom4j.Document; import org.dom4j.DocumentException; import org.dom4j.Element; import org.dom4j.io.SAXReader; import com.yc.domain.Book; public class TestDom4j { public static void main(String[] args) { TestDom4j td=new TestDom4j(); File file=new File("test.xml"); List<Book> list=td.findAll(file); for (int i = 0; i <list.size(); i++) { Book book=list.get(i); System.out.println(book.toString()); } } public List<Book> findAll(File file){ List<Book> bookList=new ArrayList<Book>(); SAXReader reader=new SAXReader(); Document doc=null; try { doc=reader.read(file); } catch (DocumentException e) { e.printStackTrace(); } Element root=doc.getRootElement();//取出根节点 //System.out.println(root); //迭代出所有子节点 Iterator its=root.elementIterator(); Book book=null; while(its.hasNext()){ Element et=(Element) its.next();//取出所有book节点 if("Book".equals(et.getName())){ book=new Book(); //迭代属性 for(Iterator attrIts=et.attributeIterator();attrIts.hasNext();){ Attribute attr=(Attribute) attrIts.next(); if("id".equals(attr.getName())){ book.setId(Integer.parseInt(attr.getValue())); } } //迭代Book地下元素 for(Iterator it=et.elementIterator();it.hasNext();){ Element el=(Element) it.next(); switch (el.getName()) { case "bookName": book.setBookName(el.getText()); break; case "bookAuthor": book.setBookAuthor(el.getText()); break; case "bookISBN": book.setBookISBN(el.getText()); break; case "bookPrice": book.setBookPrice(el.getText()); break; default: break; } } } bookList.add(book); } return bookList; } } 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77

解析结果同上 
三、使用Sax解析本地文件 
其它同上只是换种解析方法 
1.配置Sax文件显示解析过程

package com.yc.utils;

import java.util.ArrayList;
import java.util.List;

import org.xml.sax.Attributes;
import org.xml.sax.SAXException; import org.xml.sax.helpers.DefaultHandler; import com.yc.domain.Book; public class SaxXML extends DefaultHandler { private List<Book> bookList; private Book book; private String tagName;//存放每一次存放的标签 //当我解析器解析 触发方法 @Override public void startDocument() throws SAXException { bookList=new ArrayList<Book>(); System.out.println("开始读文档了"); } //当解析到元素节点时 触发这个方法 @Override public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException { System.out.println("开始读元素了"); if("Book".equals(qName)){ book=new Book(); book.setId(Integer.parseInt(attributes.getValue("id"))); } tagName=qName; } //当每次解析文本节点就调用这个 @Override public void characters(char[] ch, int start, int length) throws SAXException { System.out.println("文本解析中"); if(book!=null){ String content=new String(ch,start,length); if("bookName".equals(tagName)){ book.setBookName(content); }else if("bookAuthor".equals(tagName)){ book.setBookAuthor(content); }else if("bookISBN".equals(tagName)){ book.setBookISBN(content); }else if("bookPrice".equals(tagName)){ book.setBookPrice(content); } } } @Override public void endDocument() throws SAXException { System.out.println("文档结束了"); } //元素结束 @Override public void endElement(String uri, String localName, String qName) throws SAXException { System.out.println("元素结束了"); if("Book".equals(qName)){ bookList.add(book); book=null; } tagName=""; } public List<Book> getBookList() { return bookList; } } 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72

2、使用Sax解析本地文件test.xml

package com.yc.utils;

import java.io.File; import java.io.IOException; import java.util.ArrayList; import java.util.List; import javax.xml.parsers.ParserConfigurationException; import javax.xml.parsers.SAXParser; import javax.xml.parsers.SAXParserFactory; import org.xml.sax.SAXException; import com.yc.domain.Book; public class TestSax { public List<Book> findAll(File file){ List<Book> bookList=new ArrayList<Book>(); //获取SAX解析工厂 SAXParserFactory spf= SAXParserFactory.newInstance(); try { SAXParser parser=spf.newSAXParser(); SaxXML sx=new SaxXML(); parser.parse(file, sx); bookList=sx.getBookList(); } catch (ParserConfigurationException e) { e.printStackTrace(); } catch (SAXException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } return bookList; } public static void main(String[] args) { TestSax ts=new TestSax(); File file=new File("test.xml"); List<Book> list=ts.findAll(file); for (Book book:list) { System.out.println(book.toString()); } } } 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45

3.解析结果:

开始读文档了
开始读元素了
文本解析中
开始读元素了
文本解析中
开始读元素了
文本解析中
元素结束了
文本解析中
开始读元素了
文本解析中
元素结束了
文本解析中
开始读元素了
文本解析中
元素结束了
文本解析中
开始读元素了
文本解析中
元素结束了
文本解析中
元素结束了
文本解析中
开始读元素了
文本解析中
开始读元素了
文本解析中
元素结束了
文本解析中
开始读元素了
文本解析中
元素结束了
文本解析中
开始读元素了
文本解析中
元素结束了
文本解析中
开始读元素了
文本解析中
元素结束了
文本解析中
元素结束了
文本解析中
开始读元素了
文本解析中
开始读元素了
文本解析中
元素结束了
文本解析中
开始读元素了
文本解析中
元素结束了
文本解析中
开始读元素了
文本解析中
元素结束了
文本解析中
开始读元素了
文本解析中
元素结束了
文本解析中
元素结束了
文本解析中
元素结束了
文档结束了
Book [id=1, bookName=think in java, bookAuthor=张三, bookISBN=家, bookPrice=75.00]
Book [id=2, bookName=java核心基础, bookAuthor=王二, bookISBN=家, bookPrice=65.00] Book [id=3, bookName=Oracle, bookAuthor=李四, bookISBN=家, bookPrice=75.00] 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69

四、解析线上XMl文件我們这里以解析线上新闻为例 
注解:1.线上地址为:http://api.avatardata.cn/GuoNeiNews/Query?key=b5884e12578141e888cf17fe62903bd2&page=1&rows=10&dtype=xml 
2.xml文件为nwes.xml

<?xml version="1.0"?>
<NewsResult>
  <error_code>0</error_code> <reason>Succes</reason> <result> <NewsObj> <ctime>2016-08-28 00:21</ctime> <title>俄罗斯莫斯科仓库大火致16人死亡4人受伤</title> <description>网易国内</description> <picUrl>http://s.cimg.163.com/cnews/2016/8/28/2016082800201872c58_550.jpg.119x83.jpg</picUrl> <url>http://news.163.com/16/0828/00/BVH193060001121M.html#f=dlist</url> </NewsObj> <NewsObj> <ctime>2016-08-27 19:41</ctime> <title>江浙两省新任副省长均出身企业 未在政府工作过</title> <description>网易国内</description> <picUrl>http://s.cimg.163.com/catchpic/8/8B/8B6D4CBC561C0DC041A842C539584115.jpg.119x83.jpg</picUrl> <url>http://news.163.com/16/0827/19/BVGH7F1S0001124J.html#f=dlist</url> </NewsObj> <NewsObj> <ctime>2016-08-27 17:30</ctime> <title>国务院这几年聘任的“智囊”都有谁?</title> <description>网易国内</description> <picUrl>http://s.cimg.163.com/photo/0001/2016-08-26/t_BVCOE4IO6VVV0001.jpg.119x83.jpg</picUrl> <url>http://news.163.com/16/0827/17/BVG9OSRD00014SEH.html#f=dlist</url> </NewsObj> <NewsObj> <ctime>2016-08-27 17:43</ctime> <title>山东警方深化打击治理网络电信诈骗违法犯罪 电信诈骗</title> <description>网易国内</description> <picUrl>http://s.cimg.163.com/catchpic/1/1E/1E766CCB83F19FCD738C223989B52C14.jpg.119x83.jpg</picUrl> <url>http://news.163.com/16/0827/17/BVGAG3OF00014SEH.html#f=dlist</url> </NewsObj> <NewsObj> <ctime>2016-08-27 18:48</ctime> <title>广西东兴市发生一起中毒事故 已造成3人死亡</title> <description>网易国内</description> <picUrl>http://s.cimg.163.com/catchpic/9/91/916E9B868A41E063AB768112E4016DE1.jpg.119x83.jpg</picUrl> <url>http://news.163.com/16/0827/18/BVGE6V82000146BE.html#f=dlist</url> </NewsObj> <NewsObj> <ctime>2016-08-27 14:38</ctime> <title>内地奥运精英代表团开启3日访港之旅,将与当地民众互</title> <description>网易国内</description> <picUrl>http://s.cimg.163.com/catchpic/7/76/7673DDB4A375F3CE365A27E05D3551C8.jpg.119x83.jpg</picUrl> <url>http://news.163.com/16/0827/14/BVFVTQSD00014SEH.html#f=dlist</url> </NewsObj> <NewsObj> <ctime>2016-08-27 14:46</ctime> <title>丽江女官员被开除公职 多次与人发生不正当性关系</title> <description>网易国内</description> <picUrl>http://s.cimg.163.com/cnews/2016/8/27/20160827144553a4f90.jpg.119x83.jpg</picUrl> <url>http://news.163.com/16/0827/14/BVG0BKN70001124J.html#f=dlist</url> </NewsObj> <NewsObj> <ctime>2016-08-27 15:28</ctime> <title>甘肃张掖航空大会遇难飞行员为南非籍(图)</title> <description>网易国内</description> <picUrl>http://s.cimg.163.com/cnews/2016/8/27/20160827112149ecd50.gif.119x83.jpg</picUrl> <url>http://news.163.com/16/0827/15/BVG2OPMO00014JB6.html#f=dlist</url> </NewsObj> <NewsObj> <ctime>2016-08-27 15:37</ctime> <title>哈尔滨刘亚楼旧居等被毁不可移动文物拟原址重建</title> <description>网易国内</description> <picUrl>http://s.cimg.163.com/photo/0001/2016-08-26/t_BVCOE4IO6VVV0001.jpg.119x83.jpg</picUrl> <url>http://news.163.com/16/0827/15/BVG39ELT0001124J.html#f=dlist</url> </NewsObj> <NewsObj> <ctime>2016-08-27 15:56</ctime> <title>河北唐山市古冶区发生3.1级地震 震源深度10千米</title> <description>网易国内</description> <
### Maven依赖拉取解决方案 在开发过程中遇到“程序包不存在”的问题,通常是因为项目所需的依赖未被正确加载至本地Maven仓库。以下是针对此问题的具体分析与解决方法。 #### 1. 删除`.lastUpdated`文件 如果因网络问题导致某些依赖未能成功下载,则会在对应目录下生成以`.lastUpdated`结尾的文件。这种情况下,Maven不会尝试重新下载这些依赖。因此需要手动删除此类文件以便触发重新下载操作[^2]。 ```bash find ~/.m2/repository/ -name "*.lastUpdated" -exec rm {} \; ``` 上述命令适用于Linux/MacOS环境,在Windows环境下可以使用PowerShell执行类似功能: ```powershell Get-ChildItem -Path "$env:USERPROFILE\.m2\repository\" -Filter *.lastUpdated -Recurse | Remove-Item ``` #### 2. 清理并重建本地缓存 对于已经存在于本地但仍然无法正常使用的JAR包,可能是由于其元数据损坏所致。可以通过移除特定路径下的`_remote.repositories`文件来修复这一状况[^1]。具体做法如下: - 定位到目标JAR所在的子目录; - 将其中名为`_remote.repositories`的文件予以清除。 #### 3. 使用强制更新策略 为了确保所有必要的构件均能及时获取,可以在运行构建工具时附加参数启用强制更新模式。例如,在执行`mvn clean install`的同时加入选项 `-U` ,它会指示Maven忽略现有时间戳而强制检查最新版本可用性[^3]: ```bash mvn clean install -U ``` #### 4. 验证POM配置准确性 最后还需确认项目的pom.xml文件里关于所需库的信息填写无误,包括但不限于groupId, artifactId version字段是否匹配官方文档说明;另外也要留意是否存在冲突或者循环引用等情况发生。 --- ### 示例代码片段展示如何添加新依赖项至POM文件中 假设我们需要引入Apache Commons Lang3库作为辅助函数集合的一部分,则应在相应位置追加如下XML结构定义: ```xml <dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-lang3</artifactId> <version>3.12.0</version> </dependency> ``` 完成编辑保存后记得同步IDE状态(如Eclipse中的右键菜单选择"Maven -> Update Project..."),这样才能使更改生效反映出来。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值