热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

69期JavaSE029_XML解析

###综合练习使用Socket和多线程编写一个简单的聊天小程序,要求客户端和服务端交替发送消息,在客户端和服务端都能看到彼此的聊天记录。Serverja

 

### 综合练习使用 Socket 和多线程编写一个简单的聊天小程序,要求客户端和服务端交替发送消息,在客户端和服务端都能看到彼此的聊天记录。Server```java
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;public class Server {public static void main(String[] args) {ServerSocket serverSocket = null;Socket socket = null;try {serverSocket = new ServerSocket(8080);System.out.println("服务端已启动");while(true) {socket = serverSocket.accept();new Thread(new SocketThread(socket)).start();;}} catch (IOException e) {// TODO Auto-generated catch block
e.printStackTrace();}}
}
```ServerThread```java
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.Socket;
import java.util.Scanner;public class SocketThread implements Runnable {private Socket socket;public SocketThread(Socket socket) {this.socket = socket;}@Overridepublic void run() {// TODO Auto-generated method stubInputStream inputStream = null;DataInputStream dataInputStream = null;Scanner scanner = new Scanner(System.in);String message = null;OutputStream outputStream = null;DataOutputStream dataOutputStream = null;try {while(true) {//inputStream = socket.getInputStream();dataInputStream = new DataInputStream(inputStream);message = dataInputStream.readUTF();System.out.println("客户端:"+message);//System.out.print("服务器:");message = scanner.next();outputStream = socket.getOutputStream();dataOutputStream = new DataOutputStream(outputStream);dataOutputStream.writeUTF(message);}} catch (IOException e) {// TODO Auto-generated catch block
e.printStackTrace();}finally {try {dataOutputStream.close();outputStream.close();dataInputStream.close();inputStream.close();} catch (IOException e) {// TODO Auto-generated catch block
e.printStackTrace();}}}
}
```Client```java
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.Socket;
import java.net.UnknownHostException;
import java.util.Scanner;public class Client {public static void main(String[] args) {Socket socket = null;InputStream inputStream = null;DataInputStream dataInputStream = null;OutputStream outputStream = null;DataOutputStream dataOutputStream = null;System.out.println("客户端已启动...");try {socket = new Socket("127.0.0.1", 8080);Scanner scanner = new Scanner(System.in);String message = null;while(true) {//System.out.print("客户端:");message = scanner.next();outputStream = socket.getOutputStream();dataOutputStream = new DataOutputStream(outputStream);dataOutputStream.writeUTF(message);//inputStream = socket.getInputStream();dataInputStream = new DataInputStream(inputStream);message = dataInputStream.readUTF();System.out.println("服务器:"+message);}} catch (UnknownHostException e) {// TODO Auto-generated catch block
e.printStackTrace();} catch (IOException e) {// TODO Auto-generated catch block
e.printStackTrace();}finally {try {dataInputStream.close();inputStream.close();dataOutputStream.close();outputStream.close();} catch (IOException e) {// TODO Auto-generated catch block
e.printStackTrace();}}}
}
```### XML 解析XML:Extensible Markup Language 可扩展标记语言特点:XML 与操作系统无关、与编程语言无关,可以实现不同系统之间的数据交换。XML 文档内容由一系列标签元素组成
<标签名 属性名&#61;"属性值">元素内容- 属性值用双引号包裹
- 一个元素可以包含多个属性
- 属性值中不能直接包含<、>、"、&、&#39;

&#96;&#96;&#96;xml

张三Java高级编程Java是一门面向对象高级编程语言

&#96;&#96;&#96;注意事项
- 所有 XML 元素都必须有结束标签
- XML 标签对大小写敏感
- XML 必须有正确的嵌套
- 同级标签以缩进对齐
- 元素名称可以包含字母、数字或其他字符
- 元素名称不能以数字或标点符号开头
- 元素名称不能包含空格XML 的转义字符特殊字符&#xff1a;<> " &#39; &

转义符&#xff1a;&#96;&#96;&#96;
<> " ' &amp;
&#96;&#96;&#96;衣服型号 对应身高S
<165M 165-170L 170-175XL 175-180XXL 180-185&#96;&#96;&#96;xml

165">SMLXLXXL

&#96;&#96;&#96;考生姓名 预计得分 实际得分张三
75 80李四 75 88&#96;&#96;&#96;xml



&#96;&#96;&#96;### 解析XML用 Java 程序读取、操作 XML 文件中的数据dom4j 主流的 Java XML API&#xff0c;性能优异&#xff0c;功能强大。&#96;&#96;&#96;xml



&#96;&#96;&#96;&#96;&#96;&#96;java
import java.util.Iterator;import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;public class Test {public static void main(String[] args) {SAXReader saxReader &#61; new SAXReader();try {Document document &#61; saxReader.read("src/phone.xml");//获取根节点Element root &#61; document.getRootElement();Iterator rootIter &#61; root.elementIterator();while(rootIter.hasNext()) {Element ele &#61; rootIter.next();String name &#61; ele.attributeValue("name");System.out.println(name);Iterator eleIter &#61; ele.elementIterator();while(eleIter.hasNext()) {Element type &#61; eleIter.next();String typeName &#61; type.attributeValue("name");System.out.println(typeName);}}} catch (DocumentException e) {// TODO Auto-generated catch block
e.printStackTrace();}}
}
&#96;&#96;&#96;&#96;&#96;&#96;java
import java.io.FileWriter;
import java.io.IOException;
import java.io.OutputStream;
import java.io.Writer;import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.SAXReader;
import org.dom4j.io.XMLWriter;public class Test2 {public static void main(String[] args) {SAXReader saxReader &#61; new SAXReader();try {Document document &#61; saxReader.read("src/phone.xml");Element root &#61; document.getRootElement();Element newEle &#61; root.addElement("brand");newEle.addAttribute("name", "Vivo");Element type &#61; newEle.addElement("type");type.addAttribute("name", "型号1");OutputFormat format &#61; OutputFormat.createPrettyPrint();format.setEncoding("UTF-8");Writer fileWriter &#61; new FileWriter("src/phone.xml");XMLWriter writer &#61; new XMLWriter(fileWriter,format);writer.write(document);writer.close();} catch (DocumentException e) {// TODO Auto-generated catch block
e.printStackTrace();} catch (IOException e) {// TODO Auto-generated catch block
e.printStackTrace();}}
}
&#96;&#96;&#96;

Client.java

import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.Socket;
import java.net.UnknownHostException;
import java.util.Scanner;public class Client {public static void main(String[] args) {Socket socket &#61; null;InputStream inputStream &#61; null;DataInputStream dataInputStream &#61; null;OutputStream outputStream &#61; null;DataOutputStream dataOutputStream &#61; null;System.out.println("客户端已启动...");try {socket &#61; new Socket("127.0.0.1", 8080);Scanner scanner &#61; new Scanner(System.in);String message &#61; null;while(true) {//System.out.print("客户端&#xff1a;");message &#61; scanner.next();outputStream &#61; socket.getOutputStream();dataOutputStream &#61; new DataOutputStream(outputStream);dataOutputStream.writeUTF(message);//inputStream &#61; socket.getInputStream();dataInputStream &#61; new DataInputStream(inputStream);message &#61; dataInputStream.readUTF();System.out.println("服务器&#xff1a;"&#43;message);}} catch (UnknownHostException e) {// TODO Auto-generated catch block
e.printStackTrace();} catch (IOException e) {// TODO Auto-generated catch block
e.printStackTrace();}finally {try {dataInputStream.close();inputStream.close();dataOutputStream.close();outputStream.close();} catch (IOException e) {// TODO Auto-generated catch block
e.printStackTrace();}}}
}

 

cloth.xml

xml version&#61;"1.0" encoding&#61;"UTF-8"?>
<cloth><size range&#61;"height>165">Ssize><size range&#61;"165>Msize><size range&#61;"170>Lsize><size range&#61;"175>XLsize><size range&#61;"180>XXLsize>
cloth>

 

phone.xml

xml version&#61;"1.0" encoding&#61;"UTF-8"?><phoneinfo id&#61;"1"> <brand name&#61;"华为"> <type name&#61;"U8650"/> <type name&#61;"HW123"/> <type name&#61;"HW321"/> brand> <brand name&#61;"苹果"> <type name&#61;"iPhone"/> brand> <brand name&#61;"三星"> <type name&#61;"Note4"/> brand> <brand name&#61;"Vivo"/> <brand name&#61;"Vivo"><type name&#61;"型号1"/>brand>
phoneinfo>

 

score.xml

xml version&#61;"1.0" encoding&#61;"UTF-8"?>
<students><student name&#61;"张三" expected_score&#61;"75" score&#61;"80">student><student name&#61;"李四" expected_score&#61;"75" score&#61;"88">student>
students>

 

Server.java

import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;public class Server {public static void main(String[] args) {ServerSocket serverSocket &#61; null;Socket socket &#61; null;try {serverSocket &#61; new ServerSocket(8080);System.out.println("服务端已启动");while(true) {socket &#61; serverSocket.accept();new Thread(new SocketThread(socket)).start();;}} catch (IOException e) {// TODO Auto-generated catch block
e.printStackTrace();}}
}

 

SocketThread.java

import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.Socket;
import java.util.Scanner;public class SocketThread implements Runnable {private Socket socket;public SocketThread(Socket socket) {this.socket &#61; socket;}&#64;Overridepublic void run() {// TODO Auto-generated method stubInputStream inputStream &#61; null;DataInputStream dataInputStream &#61; null;Scanner scanner &#61; new Scanner(System.in);String message &#61; null;OutputStream outputStream &#61; null;DataOutputStream dataOutputStream &#61; null;try {while(true) {//inputStream &#61; socket.getInputStream();dataInputStream &#61; new DataInputStream(inputStream);message &#61; dataInputStream.readUTF();System.out.println("客户端&#xff1a;"&#43;message);//System.out.print("服务器&#xff1a;");message &#61; scanner.next();outputStream &#61; socket.getOutputStream();dataOutputStream &#61; new DataOutputStream(outputStream);dataOutputStream.writeUTF(message);}} catch (IOException e) {// TODO Auto-generated catch block
e.printStackTrace();}finally {try {dataOutputStream.close();outputStream.close();dataInputStream.close();inputStream.close();} catch (IOException e) {// TODO Auto-generated catch block
e.printStackTrace();}}}}

 

Test.java

import java.util.Iterator;import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;public class Test {public static void main(String[] args) {SAXReader saxReader &#61; new SAXReader();try {Document document &#61; saxReader.read("src/phone.xml");//获取根节点Element root &#61; document.getRootElement();Iterator rootIter &#61; root.elementIterator();while(rootIter.hasNext()) {Element ele &#61; rootIter.next();String name &#61; ele.attributeValue("name");System.out.println(name);Iterator eleIter &#61; ele.elementIterator();while(eleIter.hasNext()) {Element type &#61; eleIter.next();String typeName &#61; type.attributeValue("name");System.out.println(typeName);}}} catch (DocumentException e) {// TODO Auto-generated catch block
e.printStackTrace();}}
}

 

test.xml

xml version&#61;"1.0" encoding&#61;"UTF-8"?>
<books><book id&#61;"001"><author>张三author><name>Java高级编程name><description>Java是一门面向对象高级编程语言description>book><book id&#61;"002" author&#61;"李四" name&#61;"C#" description&#61;"面向对象">book>
books>

 

Test2.java

import java.io.FileWriter;
import java.io.IOException;
import java.io.OutputStream;
import java.io.Writer;import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.SAXReader;
import org.dom4j.io.XMLWriter;public class Test2 {public static void main(String[] args) {SAXReader saxReader &#61; new SAXReader();try {Document document &#61; saxReader.read("src/phone.xml");Element root &#61; document.getRootElement();Element newEle &#61; root.addElement("brand");newEle.addAttribute("name", "Vivo");Element type &#61; newEle.addElement("type");type.addAttribute("name", "型号1");OutputFormat format &#61; OutputFormat.createPrettyPrint();format.setEncoding("UTF-8");Writer fileWriter &#61; new FileWriter("src/phone.xml");XMLWriter writer &#61; new XMLWriter(fileWriter,format);writer.write(document);writer.close();} catch (DocumentException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}
}

 

转:https://www.cnblogs.com/HiJackykun/p/11173474.html



推荐阅读
  • Java太阳系小游戏分析和源码详解
    本文介绍了一个基于Java的太阳系小游戏的分析和源码详解。通过对面向对象的知识的学习和实践,作者实现了太阳系各行星绕太阳转的效果。文章详细介绍了游戏的设计思路和源码结构,包括工具类、常量、图片加载、面板等。通过这个小游戏的制作,读者可以巩固和应用所学的知识,如类的继承、方法的重载与重写、多态和封装等。 ... [详细]
  • Iamtryingtomakeaclassthatwillreadatextfileofnamesintoanarray,thenreturnthatarra ... [详细]
  • 向QTextEdit拖放文件的方法及实现步骤
    本文介绍了在使用QTextEdit时如何实现拖放文件的功能,包括相关的方法和实现步骤。通过重写dragEnterEvent和dropEvent函数,并结合QMimeData和QUrl等类,可以轻松实现向QTextEdit拖放文件的功能。详细的代码实现和说明可以参考本文提供的示例代码。 ... [详细]
  • 本文主要解析了Open judge C16H问题中涉及到的Magical Balls的快速幂和逆元算法,并给出了问题的解析和解决方法。详细介绍了问题的背景和规则,并给出了相应的算法解析和实现步骤。通过本文的解析,读者可以更好地理解和解决Open judge C16H问题中的Magical Balls部分。 ... [详细]
  • 本文讨论了一个关于cuowu类的问题,作者在使用cuowu类时遇到了错误提示和使用AdjustmentListener的问题。文章提供了16个解决方案,并给出了两个可能导致错误的原因。 ... [详细]
  • 个人学习使用:谨慎参考1Client类importcom.thoughtworks.gauge.Step;importcom.thoughtworks.gauge.T ... [详细]
  • 本文介绍了UVALive6575题目Odd and Even Zeroes的解法,使用了数位dp和找规律的方法。阶乘的定义和性质被介绍,并给出了一些例子。其中,部分阶乘的尾零个数为奇数,部分为偶数。 ... [详细]
  • [大整数乘法] java代码实现
    本文介绍了使用java代码实现大整数乘法的过程,同时也涉及到大整数加法和大整数减法的计算方法。通过分治算法来提高计算效率,并对算法的时间复杂度进行了研究。详细代码实现请参考文章链接。 ... [详细]
  • 本文介绍了南邮ctf-web的writeup,包括签到题和md5 collision。在CTF比赛和渗透测试中,可以通过查看源代码、代码注释、页面隐藏元素、超链接和HTTP响应头部来寻找flag或提示信息。利用PHP弱类型,可以发现md5('QNKCDZO')='0e830400451993494058024219903391'和md5('240610708')='0e462097431906509019562988736854'。 ... [详细]
  • 前景:当UI一个查询条件为多项选择,或录入多个条件的时候,比如查询所有名称里面包含以下动态条件,需要模糊查询里面每一项时比如是这样一个数组条件:newstring[]{兴业银行, ... [详细]
  • Java学习笔记之面向对象编程(OOP)
    本文介绍了Java学习笔记中的面向对象编程(OOP)内容,包括OOP的三大特性(封装、继承、多态)和五大原则(单一职责原则、开放封闭原则、里式替换原则、依赖倒置原则)。通过学习OOP,可以提高代码复用性、拓展性和安全性。 ... [详细]
  • 开发笔记:实验7的文件读写操作
    本文介绍了使用C++的ofstream和ifstream类进行文件读写操作的方法,包括创建文件、写入文件和读取文件的过程。同时还介绍了如何判断文件是否成功打开和关闭文件的方法。通过本文的学习,读者可以了解如何在C++中进行文件读写操作。 ... [详细]
  • 学习Java异常处理之throws之抛出并捕获异常(9)
    任务描述本关任务:在main方法之外创建任意一个方法接收给定的两个字符串,把第二个字符串的长度减1生成一个整数值,输出第一个字符串长度是 ... [详细]
  • Spring特性实现接口多类的动态调用详解
    本文详细介绍了如何使用Spring特性实现接口多类的动态调用。通过对Spring IoC容器的基础类BeanFactory和ApplicationContext的介绍,以及getBeansOfType方法的应用,解决了在实际工作中遇到的接口及多个实现类的问题。同时,文章还提到了SPI使用的不便之处,并介绍了借助ApplicationContext实现需求的方法。阅读本文,你将了解到Spring特性的实现原理和实际应用方式。 ... [详细]
  • XML介绍与使用的概述及标签规则
    本文介绍了XML的基本概念和用途,包括XML的可扩展性和标签的自定义特性。同时还详细解释了XML标签的规则,包括标签的尖括号和合法标识符的组成,标签必须成对出现的原则以及特殊标签的使用方法。通过本文的阅读,读者可以对XML的基本知识有一个全面的了解。 ... [详细]
author-avatar
幸福的小兔子3
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有