import org.junit.Before; import org.junit.Test; import javax.xml.stream.XMLInputFactory; import javax.xml.stream.XMLStreamConstants; import javax.xml.stream.XMLStreamException; import javax.xml.stream.XMLStreamReader; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.InputStream; import java.io.InputStreamReader; import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; import java.sql.Statement; import java.util.ArrayList; import java.util.HashMap; import static javafx.scene.input.KeyCode.K; import static javafx.scene.input.KeyCode.V; public class StaxTest { private InputStream inputStream; private HashMap<String, String> map; private ArrayList<parseDomain> parseDomain; private parseDomain PD; public StaxTest() throws SQLException { } @Before public void setup() throws Exception { //inputStream = StaxTest.class.getClassLoader().getResourceAsStream("D:\\解析xml\\新建文本文档.xml"); inputStream = new FileInputStream("D:\\解析xml\\新建文本文档.xml"); //InputStreamReader inputStreamReader = new InputStreamReader(inputStream, "utf-8"); map = new HashMap<>(); parseDomain = new ArrayList<>(); PD = new parseDomain(); Class.forName("com.mysql.cj.jdbc.Driver"); } // 基于指针方式读取xml @Test public void testRetrieveBycussor() throws XMLStreamException, SQLException { //创建读取流工厂对象 XMLInputFactory factory = XMLInputFactory.newInstance(); XMLStreamReader xmlStreamReader = factory.createXMLStreamReader(inputStream); //用指针迭代 while (xmlStreamReader.hasNext()) { //事件的id int eventId = xmlStreamReader.next(); switch (eventId) { case XMLStreamConstants.START_DOCUMENT: System.out.println("开始document"); break; case XMLStreamConstants.START_ELEMENT: System.out.println("开始emlement"); for (int i = 0; i < xmlStreamReader.getAttributeCount(); i++) { if(xmlStreamReader.getAttributeLocalName(i).equals("HelpTip")){ //System.out.println(xmlStreamReader.getAttributeLocalName(i) + "=" + xmlStreamReader.getAttributeValue(i)); PD.setK(xmlStreamReader.getAttributeValue(i)); } } break; case XMLStreamConstants.CHARACTERS: if (xmlStreamReader.isWhiteSpace()) { break; } //System.out.println(xmlStreamReader.getText()); if(xmlStreamReader.getText().length()>0){ PD.setV(xmlStreamReader.getText()); }else { } //写入数据库 String sql1 = "insert into parsexml(K,V) values('"+PD.getK()+"'"; String s = ","; String sql2 ="'"+PD.getV()+"'"; String sql3 = ")"; String sql = sql1 +s+ sql2+sql3; Connection connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/test?useSSL=true&serverTimezone=UTC", "root", "123456"); Statement statement = connection.createStatement(); statement.execute(sql); //parseDomain.add(PD); System.out.println(PD.toString()); break; case XMLStreamConstants.END_ELEMENT: //System.out.println("</" + xmlStreamReader.getLocalName() + ">"); break; case XMLStreamConstants.END_DOCUMENT: System.out.println("结束 document"); break; default: break; } } } }
stax解析xml并写入数据库
最新推荐文章于 2019-07-01 21:04:56 发布