热门标签 | 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



推荐阅读
  • 本文详细解析了Python中的os和sys模块,介绍了它们的功能、常用方法及其在实际编程中的应用。 ... [详细]
  • Windows服务与数据库交互问题解析
    本文探讨了在Windows 10(64位)环境下开发的Windows服务,旨在定期向本地MS SQL Server (v.11)插入记录。尽管服务已成功安装并运行,但记录并未正确插入。我们将详细分析可能的原因及解决方案。 ... [详细]
  • 本文将介绍如何编写一些有趣的VBScript脚本,这些脚本可以在朋友之间进行无害的恶作剧。通过简单的代码示例,帮助您了解VBScript的基本语法和功能。 ... [详细]
  • Explore a common issue encountered when implementing an OAuth 1.0a API, specifically the inability to encode null objects and how to resolve it. ... [详细]
  • 技术分享:从动态网站提取站点密钥的解决方案
    本文探讨了如何从动态网站中提取站点密钥,特别是针对验证码(reCAPTCHA)的处理方法。通过结合Selenium和requests库,提供了详细的代码示例和优化建议。 ... [详细]
  • 本文详细介绍了如何使用 Yii2 的 GridView 组件在列表页面实现数据的直接编辑功能。通过具体的代码示例和步骤,帮助开发者快速掌握这一实用技巧。 ... [详细]
  • 本文详细介绍了Java中org.eclipse.ui.forms.widgets.ExpandableComposite类的addExpansionListener()方法,并提供了多个实际代码示例,帮助开发者更好地理解和使用该方法。这些示例来源于多个知名开源项目,具有很高的参考价值。 ... [详细]
  • 使用 Azure Service Principal 和 Microsoft Graph API 获取 AAD 用户列表
    本文介绍了一段通用代码示例,该代码不仅能够操作 Azure Active Directory (AAD),还可以通过 Azure Service Principal 的授权访问和管理 Azure 订阅资源。Azure 的架构可以分为两个层级:AAD 和 Subscription。 ... [详细]
  • 深入解析Spring Cloud Ribbon负载均衡机制
    本文详细介绍了Spring Cloud中的Ribbon组件如何实现服务调用的负载均衡。通过分析其工作原理、源码结构及配置方式,帮助读者理解Ribbon在分布式系统中的重要作用。 ... [详细]
  • 在前两篇文章中,我们探讨了 ControllerDescriptor 和 ActionDescriptor 这两个描述对象,分别对应控制器和操作方法。本文将基于 MVC3 源码进一步分析 ParameterDescriptor,即用于描述 Action 方法参数的对象,并详细介绍其工作原理。 ... [详细]
  • 本文详细介绍了Akka中的BackoffSupervisor机制,探讨其在处理持久化失败和Actor重启时的应用。通过具体示例,展示了如何配置和使用BackoffSupervisor以实现更细粒度的异常处理。 ... [详细]
  • XNA 3.0 游戏编程:从 XML 文件加载数据
    本文介绍如何在 XNA 3.0 游戏项目中从 XML 文件加载数据。我们将探讨如何将 XML 数据序列化为二进制文件,并通过内容管道加载到游戏中。此外,还会涉及自定义类型读取器和写入器的实现。 ... [详细]
  • 本章将深入探讨移动 UI 设计的核心原则,帮助开发者构建简洁、高效且用户友好的界面。通过学习设计规则和用户体验优化技巧,您将能够创建出既美观又实用的移动应用。 ... [详细]
  • 扫描线三巨头 hdu1928hdu 1255  hdu 1542 [POJ 1151]
    学习链接:http:blog.csdn.netlwt36articledetails48908031学习扫描线主要学习的是一种扫描的思想,后期可以求解很 ... [详细]
  • 优化ListView性能
    本文深入探讨了如何通过多种技术手段优化ListView的性能,包括视图复用、ViewHolder模式、分批加载数据、图片优化及内存管理等。这些方法能够显著提升应用的响应速度和用户体验。 ... [详细]
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社区 版权所有