问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

java的xml的解析方式有什么,他们的解析流程是怎么样的,有什么区别

发布网友 发布时间:2022-04-29 17:49

我来回答

8个回答

懂视网 时间:2022-04-29 22:11

创建客户端Socket向服务器发起连接请求 Socket socket = new Socket("127.0.0.1", 30001); /* 利用已建立的socket创建输入输出流,处理与服务器端的连接 */ // 向服务器写入数据 BufferedWriter writer = new BufferedWriter(new OutputStreamWriter( socket.getOutputStream())); writer.write("你好服务器!!!"); writer.flush(); // 从服务器读数据 BufferedReader reader = new BufferedReader(new InputStreamReader( socket.getInputStream())); char[] ch = new char[100]; int len = reader.read(ch); System.out.println("从服务器端接收到的信息:"); System.out.print(new String(ch, 0, len)); // 释放资源 reader.close(); writer.close(); socket.close();

    数据库编程

JDBC是Java中提供的一套数据库编程API。

DriverManager类用于管理JDBC驱动的服务类。

Connection接口代表数据库连接。

Statement接口代表SQL语句。

ResultSet接口代表返回的结果集。

 Connection conn = null; // 连接对象
 Statement stmt = null; // Statement对象
 ResultSet rs = null; // 查询结果集

 /* 加载驱动 */
 try {
  Class.forName("com.mysql.jdbc.Driver");
 } catch (ClassNotFoundException e) {
  e.printStackTrace();
 }
 /* 创建Connection对象 */
 // 连接字符串
 String url = "jdbc:mysql://localhost:3306/java";
 // 用户名
 String user = "root";
 // 密码
 String pwd = "5245";
 try {
  // 创建连接
  conn = DriverManager.getConnection(url, user, pwd);
  System.out.println("连接成功");
 } catch (SQLException e) {
  e.printStackTrace();
 }
 /* 创建Statement对象 */
 try {
  stmt = conn.createStatement();
 } catch (SQLException e) {
  e.printStackTrace();
 }
 /* 发送SQL语句执行 */
  // 添加
//  String sql1 =
//  "INSERT INTO users(id,username,pwd) VALUES(4,‘HXS‘,‘1995‘)";
//  int count = 0;
//  try {
//  count = stmt.executeUpdate(sql1);
//  } catch (SQLException e) {
//  // e.printStackTrace();
//  }
// /* 处理执行结果 */
//  if (count == 1) {
//  System.out.println("添加成功");
//  } else {
//  System.out.println("添加失败");
//  }

 // 查询
 String sql = "SELECT id, username, pwd FROM users";
 try {
  // 获取查询结果集
  rs = stmt.executeQuery(sql);
 } catch (SQLException e) {
  // e.printStackTrace();
 }
 try {
  // 循环读取下一条记录
  while (rs.next()) {
  // 获取行中某列值
  System.out.println("id = " + rs.getInt("id") + ", username = "
   + rs.getString("username") + ", password = "
   + rs.getString("pwd"));
  }
 } catch (SQLException e) {
  // e.printStackTrace();
 }

 /* 释放资源:必做 */
 if (conn != null)
  try {
  conn.close();
  } catch (SQLException e) {
  e.printStackTrace();
  } finally {
  if (rs != null)
   try {
   rs.close();
   } catch (SQLException e) {
   e.printStackTrace();
   } finally {
   if (stmt != null)
    try {
    stmt.close();
    } catch (SQLException e) {
    e.printStackTrace();
    }
   }
  }
 }

    XML解析技术

XML:可扩展标记语言。

形式:

  进行验证的处理器--检查XML文档的有效性和格式规范。

  不进行验证的处理器--检查XML文档的格式规范。

XML解析器使用的两种基本API:

  文档对象模型(DOM):一种基于树结构的API。

  XML简单API(SAX):一种事件驱动的API。

<!-- 企鹅 -->
<penguins>
 <penguin id="1">
 <name>豆豆</name> <!-- 姓名 -->
 <close>100</close> <!-- 亲密值 -->
 <health>100</health> <!-- 健康值 -->
 <gender>男</gender><!-- 性别 -->
 </penguin>
<!ELEMENT pet (dogs,penguins)>

<!ELEMENT dogs (dog*)>
<!ELEMENT dog (name,close,health,breed)>
<!ATTLIST dog id CDATA #REQUIRED>

<!ELEMENT penguins (penguin*)>
<!ELEMENT penguin (name,close,health,gender)>
<!ATTLIST penguin id CDATA #REQUIRED>

<!ELEMENT name (#PCDATA)>
<!ELEMENT close (#PCDATA)>
<!ELEMENT health (#PCDATA)>
<!ELEMENT breed (#PCDATA)>
<!ELEMENT gender (#PCDATA)>

 

Java网络编程丶数据库编程丶XML解析技术。

标签:

热心网友 时间:2022-04-29 19:19

答:4种。(或者说是两种,因为JDOM和DOM4J是DOM的两个特殊情况)

1.SAX解析
解析方式是事件驱动机制!

SAX解析器,逐行读取XML文件解析,每当解析到一个标签的开始/结束/内容/属性时,触发事件。

可以在这些事件发生时,编写程序进行相应的处理。

优点:

分析能够立即开始,而不是等待所有的数据被处理。

逐行加载,节省内存,有助于解析大于系统内存的文档。

有时不必解析整个文档,它可以在某个条件得到满足时停止解析。

缺点:

1.单向解析,无法定位文档层次,无法同时访问同一个文档的不同部分数据(因为逐行解析,当解析第n行时,第n-1行)已经被释放了,无法再对其进行操作)。

2. 无法得知事件发生时元素的层次, 只能自己维护节点的父/子关系。

3. 只读解析方式, 无法修改XML文档的内容。

2. DOM解析
是用与平台和语言无关的方式表示XML文档的官方W3C标准,分析该结构通常需要加载整个 文档和内存中建立文档树模型。程序员可以通过操作文档树, 来完成数据的获取 修改 删除等。

优点:

文档在内存中加载, 允许对数据和结构做出更改。访问是双向的,可以在任何时候在树中双向解析数据。

缺点:

文档全部加载在内存中 , 消耗资源大。

3. JDOM解析
目的是成为Java特定文档模型,它简化与XML的交互并且比使用DOM实现更快。由于是第一 个Java特定模型,JDOM一直得到大力推广和促进。

JDOM文档声明其目的是“使用20%(或更少)的精力解决80%(或更多)Java/XML问题” (根据学习曲线假定为20%)

优点:

使用具体类而不是接口,简化了DOM的API。

大量使用了Java集合类,方便了Java开发人员。

缺点:

没有较好的灵活性。

性能不是那么优异。

4. DOM4J解析
它是JDOM的一种智能分支。它合并了许多超出基本XML文档表示的功能,包括集成的XPath 支持、XML Schema支持以及用于大文档或流化文档的基于事件的处理。它还提供了构建文档表示的选项, DOM4J是一个非常优秀的Java XML API,具有性能优异、功能强大和极端易用使用的特点,同时它也是一 个开放源代码的软件。如今你可以看到越来越多的Java软件都在使用DOM4J来读写XML。

目前许多开源项目中大量采用DOM4J , 例如:Hibernate。

热心网友 时间:2022-04-29 20:37

DOM4J,JDOM,SAX
public class DomTest3
{
public static void main(String[] args) throws Exception
{
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = dbf.newDocumentBuilder();

Document doc = db.parse(new File("student.xml"));
//获得根元素结点
Element root = doc.getDocumentElement();

parseElement(root);
}

private static void parseElement(Element element)
{
String tagName = element.getNodeName();

NodeList children = element.getChildNodes();

System.out.print("<" + tagName);

//element元素的所有属性所构成的NamedNodeMap对象,需要对其进行判断
NamedNodeMap map = element.getAttributes();

//如果该元素存在属性
if(null != map)
{
for(int i = 0; i < map.getLength(); i++)
{
//获得该元素的每一个属性
Attr attr = (Attr)map.item(i);

String attrName = attr.getName();
String attrValue = attr.getValue();

System.out.print(" " + attrName + "=\"" + attrValue + "\"");
}
}

System.out.print(">");

for(int i = 0; i < children.getLength(); i++)
{
Node node = children.item(i);
//获得结点的类型
short nodeType = node.getNodeType();

if(nodeType == Node.ELEMENT_NODE)
{
//是元素,继续递归
parseElement((Element)node);
}
else if(nodeType == Node.TEXT_NODE)
{
//递归出口
System.out.print(node.getNodeValue());
}
else if(nodeType == Node.COMMENT_NODE)
{
System.out.print("<!--");

Comment comment = (Comment)node;

//注释内容
String data = comment.getData();

System.out.print(data);

System.out.print("-->");
}
}
System.out.print("</" + tagName + ">");
}
}
public class SaxTest1
{
public static void main(String[] args) throws Exception
{
//step1: 获得SAX解析器工厂实例
SAXParserFactory factory = SAXParserFactory.newInstance();

//step2: 获得SAX解析器实例
SAXParser parser = factory.newSAXParser();

//step3: 开始进行解析
parser.parse(new File("student.xml"), new MyHandler());

}
}

class MyHandler extends DefaultHandler
{
@Override
public void startDocument() throws SAXException
{
System.out.println("parse began");
}

@Override
public void endDocument() throws SAXException
{
System.out.println("parse finished");
}

@Override
public void startElement(String uri, String localName, String qName,
Attributes attributes) throws SAXException
{
System.out.println("start element");
}

@Override
public void endElement(String uri, String localName, String qName)
throws SAXException
{
System.out.println("finish element");
}
}

public class JDomTest1
{
public static void main(String[] args) throws Exception
{
Document document = new Document();

Element root = new Element("root");

document.addContent(root);

Comment comment = new Comment("This is my comments");

root.addContent(comment);

Element e = new Element("hello");

e.setAttribute("sohu", "www.sohu.com");

root.addContent(e);

Element e2 = new Element("world");

Attribute attr = new Attribute("test", "hehe");

e2.setAttribute(attr);

e.addContent(e2);

e2.addContent(new Element("aaa").setAttribute("a", "b")
.setAttribute("x", "y").setAttribute("gg", "hh").setText("text content"));

Format format = Format.getPrettyFormat();

format.setIndent(" ");
// format.setEncoding("gbk");

XMLOutputter out = new XMLOutputter(format);

out.output(document, new FileWriter("jdom.xml"));

}
}

热心网友 时间:2022-04-29 22:11

解析流程就是 通过反射 来获取 每个标签,然后,解析成 对象,封装起来,推荐用 XStream

热心网友 时间:2022-04-30 00:03

使用jdom技术来解析XML,来将xml中的配置获取到Element中,从网上查一下相关使用方式,很容易的。只是我这没有具体的例子。

热心网友 时间:2022-04-30 02:11

1.DOM生成和解析XML文档
2.SAX生成和解析XML文档
3.DOM4J生成和解析XML文档
4.JDOM生成和解析XML

热心网友 时间:2022-04-30 04:35

DOM4J比较好用

热心网友 时间:2022-04-30 07:17

百度啊,到处是
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
工会主席权限 魅族坏了怎么办 网上买的魅族手机坏了可以保修吗?自己弄坏的,手机花屏,修要多少钱... 从梁溪路公益路公交站到建筑路夏联福记酒店坐什么公交最方便? 退货保和运费险有什么不同 现代Logo设计趋势是什么 优秀的logo设计有什么特征? 哪些品牌的鱼竿质量好 光威悟法师和达瓦一击哪个好 有人了解大卫地板吗?怎么样呢? 体育部给训练的运动员发奖状鼓励,奖状怎么写? 体育老师的奖状怎么写内容 奖项的体育奖 篮球奖状名称 关于毛笔书法中墨的问题!!! 急,正在写毛笔书法,楷书的,差不多写完,不小心滴了点墨水,怎么办? 软笔练书法用墨汁可以吗? 我是中国化学集团公司下属子公司劳务人员回国隔离期间有没有工资,工资发放标准是什么? 中化十一建设开封总公司新员工工资待遇怎么样?我是2011届二本院校化学工程专业毕业生,想去该公司。 中化泉州石化公司正式工待遇好吗?月工资能拿多少 苏州中化药品工业有限公司员工工资怎么样 葡萄酒为什么要醒酒喝的效果才会更好? 中化石油黑龙江有限公司 油站开发专员,福利待遇,薪资待遇,发展空间。明白的大哥进来说说 中国化工集团公司工资待遇怎么样 中化石油辽宁本科生待遇怎么样?本科生贸易执行工资多少? 谁知道中化集团员工的年薪? 中化的一个管理层的薪水大概是多少? ENVISION显示器是不是最近出新品了?有了解的大神么? _百度问一问 电脑显示envision图像并且闪屏是为什么 家用实木圆餐桌什么牌子的好,价格具体是? 实木餐桌图片 圆形实木餐桌好还是方形实木餐桌好 目前的实木圆餐桌价格是多少钱呀? 实木大餐桌的十大品牌都有哪些谁知道 实木大圆桌台面分为几组安装好些,是不是两组更牢固? 实木大圆桌面整的和实木对折餐桌面哪种好 粉色的美甲,适合什么样的,你感觉怎么样 美甲之如何做粉色浪漫 12星座最适合的美甲颜色:我是粉色,你们是什么颜色 真丝连衣裙品牌哪些性价比高,哪里可以买到正品。? 乾隆通宝,直径22mm,厚1mm,求鉴定! 一口香调理鸡肉是否可以用空气炸锅 乾隆通宝铜钱,一个大约直径24mm,一个大约22mm,值钱吗? 乾隆通宝有重量3.7克直径22mm的吗? 周公解梦 我梦见我儿子穿棉袄棉裤都是湿透的 梦见儿子上厕所出来不知道怎么浑身湿透了 梦见儿子全身都湿透了在地上睡着J是什么意思? 调理鸡胸肉放时间长变酸还是变臭 梦见孩子出汗全身湿透了