网络通信: 套接字通信 网络传输协议 TCP 面向连接的 数据流 数据传输安全 发送和接收包的顺序一样 UDP 面向不连接 数据报 数据传输不安全 可能发生丢包 接收和发送的顺序可能不一样
TCP: ServerSocket port 端口 0-65536 Socket accept() Socket host port InputStream() 接收消息 OutputStream() 发送消息
UDP: DatagramSocket receive(DatagramPacket p) send(DatagramPacket p) DatagramPacket 65536-8
InetAddress int port网络通信 服务器 多线程
XML 可扩展标记语言 存储和传输数据 元素 节点 标签 属性 文本内容 有且只有一个根元素 <![CDATA[文本内容]]> < < > > & & ’ ’ " "
HTML 显示数据
XML解析: SAX Simple API for XML
DOM Document Object Model
第三方jar dom4j
SAXReader 能够把xml文件加载成 Document对象 SAXReader reader = new SAXReader(); Document doc = reader.read(""); Element rootEle = doc.getRootElement(); String getName(); String getTextTrim(); String getText(); Attribute attribute(int index) Attribute attribute(String name) List attributes(); Element element(String name) List elements();
DocumentHelper static Document createDocument(); Element addElement(String name); Element addElement(String name,String text) Element addAttribute(string name,string value) Element addText(string text) XMLWriter XMLWriter writer = new XMLWriter(); writer.setOutputStream(OutputStream os); writer.write(Document doc);遍历Document 查找
Document inherit Node 查找节点(元素) public List selectNodes(String xpathExpression)
XPATH 表达式 正则表达式 用路径表达式来在xml文档中进行导航(搜索) 用路径来表示内容在xml文档中的位置 路径: 绝对路径 / 表示的是文件名 相对路径 . 当前节点 … 父节点 上一级节点
斜杠(/)作为路径内部的分割符 /根节点/ /nodename 节点名称 / 代表文件下查找 // 表示选择任意位置的所有节点 @ 表示选择某个属性通配符: * 表示匹配任何元素节点 @* 表示匹配任何属性值 node() 表示匹配任何类型的节点
选择: [n] 匹配第n个 [last()] [position() < n] [position() > n] @id=‘1’ nodename[@属性名=‘值’]
//nodename 所有为nodename的节点都匹配出来 /x/x/* 某个节点下所有的节点解析(读取) 构造Document 写入到文件 Document 遍历 查找
Properties extends HashTable key – value void load(InputStream inStream) 从输入流中读取属性列表(键和元素对)。 void load(Reader reader) 按简单的面向行的格式从输入字符流中读取属性列表(键和元素对)。 void loadFromXML(InputStream in) 将指定输入流中由 XML 文档所表示的所有属性加载到此属性表中。
String getProperty(String key) 通过key索引value 如果key不存在返回null String getProperty(String key, String defaultValue) Set stringPropertyNames() 取得所有key的集合