java 递归遍历对象所有属性_Java学习之Xml系列二:xml按条件查询、xml递归遍历所有元素和属性...

xml中加入了几条,为了方便查询时作为示例。

话不多说见代码注释:

DTD文件:SwordTypeDefinition.dtd

XML文件:SwordLib.xml

SwordLibrary SYSTEM "SwordTypeDefinition.dtd">

欢欣之刃

1000

10

夜叉

2050

30

魔棒

200

0

java代码:

package JavaLeaner.XmlTest;

import java.io.BufferedReader;

import java.io.IOException;

import java.io.InputStreamReader;

import javax.xml.parsers.DocumentBuilder;

import javax.xml.parsers.DocumentBuilderFactory;

import javax.xml.parsers.ParserConfigurationException;

import org.junit.Test;

import org.w3c.dom.Document;

import org.w3c.dom.Element;

import org.w3c.dom.NamedNodeMap;

import org.w3c.dom.NodeList;

import org.xml.sax.SAXException;

public class XmlDemo2 {

/*

* 按照属性sno查询

*/

@Test

public void Test1() throws IOException, ParserConfigurationException, SAXException

{

System.out.println("请输入查找的sword的sno:");

//这里是java 的控制台输入方法,老忘记,TT

BufferedReader br=new BufferedReader(new InputStreamReader(System.in));

String sno=br.readLine();

Element st= FindSwordBySno(sno);

if (st != null) {

String sname = st.getElementsByTagName("SwordName").item(0).getTextContent();

System.out.println("此剑为:" + sname);

}

else

{

System.out.println("这里不卖!!" );

}

/*        请输入查找的sword的sno:

s2

此剑为:夜叉

*/

}

Element FindSwordBySno(String sno)throws ParserConfigurationException, SAXException, IOException

{

DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();

DocumentBuilder docDuilder = factory.newDocumentBuilder();

Document doc = docDuilder.parse("src/JavaLeaner/XmlTest/SwordLib.xml");

NodeList list = doc.getElementsByTagName("Sword");

for(int i=0;i

{

Element swordTag=(Element)list.item(i);

String snoText=swordTag.getAttribute("sno");

if(snoText.equals(sno))

{

return swordTag;

}

}

return null;

}

/*

* 递归遍历整个xml文档的元素和属性

*/

@Test

public void Test2() throws IOException, ParserConfigurationException, SAXException

{

DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();

DocumentBuilder docDuilder = factory.newDocumentBuilder();

Document doc = docDuilder.parse("src/JavaLeaner/XmlTest/SwordLib.xml");

//取文档根元素

Element rootElement= doc.getDocumentElement();

String rootName = rootElement.getTagName();

System.out.println(rootName);

DeepIn(rootElement);

}

void DeepIn(Element parentElement)

{

NodeList list=parentElement.getChildNodes();

for(int i=0;i

{

if (list.item(i) instanceof Element) {

Element nodeElement = (Element) list.item(i);

String eName = nodeElement.getNodeName();

System.out.println(eName);

NamedNodeMap nnm=nodeElement.getAttributes();

//注意:NamedNodeMap也不支持java.lang.Iterable,所以不能增强佛如循环

for(int j=0;j

{

String aName = nnm.item(j).getNodeName();

String aText = nnm.item(j).getTextContent();

System.out.println("    "+aName+"="+aText);

}

DeepIn(nodeElement);

}

else

{

//System.out.println("not Element:"+list.item(i).getTextContent()+"------");

/*                注意: getChildNodes()获取的不仅仅包括子元素,还包括其他的字符串等文本,这里之所以会出现这些not Element:-----,是因为xml文件中有许多空白符和换行的缘故

*                 在实际使用中,可以像本例一样用instanceof Element的条件判断将这些东西过滤掉。

*                 这个结果不包含属性部分的代码:

*                 SwordLibrary

not Element:

------

Sword

not Element:

------

SwordName

not Element:欢欣之刃------

not Element:

------

Price

not Element:1000------

not Element:

------

Attack

not Element:10------

not Element:

------

not Element:

------

Sword

not Element:

------

SwordName

not Element:夜叉------

not Element:

------

Price

not Element:2050------

not Element:

------

Attack

not Element:30------

not Element:

------

not Element:

------

Sword

not Element:

------

SwordName

not Element:魔棒------

not Element:

------

Price

not Element:200------

not Element:

------

Attack

not Element:0------

not Element:

------

not Element:

------*/

}

}

/*        结果:

*

*         SwordLibrary

Sword

sno=s1

SwordName

Price

Attack

factor=1.0

Sword

sno=s2

SwordName

Price

Attack

factor=2.0

Sword

sno=s3

SwordName

Price

type=Dollar

Attack

factor=1.0*/

}

}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/561998.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

HTML+CSS+JS实现 ❤️酷炫3D瀑布流动画特效❤️

🍅 作者主页:Java李杨勇 🍅 简介:Java领域优质创作者🏆、Java李杨勇公号作者✌ 简历模板、学习资料、面试题库、技术互助【关注我,都给你】 🍅 欢迎点赞 👍 收藏 ⭐留言 &#x1f…

java 取dataset_Java LineDataSet.getYVals方法代码示例

import com.github.mikephil.charting.data.LineDataSet; //导入方法依赖的package包/类protected void drawCircles(Canvas c) {mRenderPaint.setStyle(Paint.Style.FILL);float phaseX mAnimator.getPhaseX();float phaseY mAnimator.getPhaseY();List dataSets mChart.ge…

HTML+CSS+JS实现 ❤️canvas圆形水波进度条动画特效❤️

🍅 作者主页:Java李杨勇 🍅 简介:Java领域优质创作者🏆、Java李杨勇公号作者✌ 简历模板、学习资料、面试题库、技术互助【关注我,都给你】 🍅 欢迎点赞 👍 收藏 ⭐留言 &#x1f…

HTML+CSS+JS实现 ❤️圆圈波纹动画特效❤️

🍅 作者主页:Java李杨勇 🍅 简介:Java领域优质创作者🏆、Java李杨勇公号作者✌ 简历模板、学习资料、面试题库、技术互助【关注我,都给你】 🍅 欢迎点赞 👍 收藏 ⭐留言 &#x1f…

java 二叉树迭代器_C,为二叉树实现自定义迭代器(长)

请你好 - 这是我的第一个问题 . P基本上作为夏季项目,我一直在浏览wikipedia page上的数据结构列表并尝试实现它们 . 我上学期参加了一门C课程并发现它非常有趣,作为我实施二项式堆的最后一个项目 - 这也非常有趣 . 也许我很讨厌,但我喜欢数…

java防止编码重复_java – 如何避免许多小类的代码重复?

我有不同的课程,分别是英语,西班牙语,法语等:Class English{String name "English";String alias "ENG";}Class French{String name "French";String alias "Fre";}与其他语言类似.还有一个叫做语言的课:Cl…

HTML+CSS+JS实现 ❤️6种transform图片悬停动态效果❤️

🍅 作者主页:Java李杨勇 🍅 简介:Java领域优质创作者🏆、Java李杨勇公号作者✌ 简历模板、学习资料、面试题库、技术互助【关注我,都给你】 🍅 欢迎点赞 👍 收藏 ⭐留言 &#x1f…

ldap协议 java_java如何调用ldap协议【LdapContext】

背景:做了个系统需要用集团的用户id登录。而集团用户系统是用ldap做的。关键知识点1. 设置连接ctx new InitialLdapContext(env, connCtls);2.设置url和查询的子路径env.put(Context.PROVIDER_URL, URL);// LDAP serverenv.put(Context.SECURITY_PRINCIPAL, SEARCH…

HTML+CSS+JS实现 ❤️经典霓虹灯英文字母特效❤️

🍅 作者主页:Java李杨勇 🍅 简介:Java领域优质创作者🏆、Java李杨勇公号作者✌ 简历模板、学习资料、面试题库、技术互助【关注我,都给你】 🍅 欢迎点赞 👍 收藏 ⭐留言 &#x1f…

操作系统分区分配java算法_合肥工业大学操作系统课程设计 动态分区分配存储管理java版.doc...

合肥工业大学操作系统课程设计 动态分区分配存储管理java版.doc 1课程设计动态分区分配存储管理设计题目学号专业班级学生姓名号指导教师22010年12月合肥工业大学课程设计任务书设计题目动态分区分配存储管理成绩主要内容动态分区分配存储管理建立描述内存分配状况的数据结构&a…

HTML+CSS+JS实现 ❤️感谢关注3D文字动画特效❤️

🍅 作者主页:Java李杨勇 🍅 简介:Java领域优质创作者🏆、Java李杨勇公号作者✌ 简历模板、学习资料、面试题库、技术互助【关注我,都给你】 🍅 欢迎点赞 👍 收藏 ⭐留言 &#x1f…

java中字符串后加Box_字符串未显示在JavaFX中ComboBox的Tableview上

我一直在尝试在Java中显示我从组合框到表视图的选择 . 我花了好几个小时都在寻找解决方案,但没有用 . 我没有任何错误,但我似乎无法在TableView上显示一个字符串 . 我想请求帮助 .MainView.java有组合框和单击按钮的位置,它应该将组合框中的字…

HTML+CSS+JS实现 ❤️基于Javascript简单计算器特效❤️

🍅 作者主页:Java李杨勇 🍅 简介:Java领域优质创作者🏆、Java李杨勇公号作者✌ 简历模板、学习资料、面试题库、技术互助【关注我,都给你】 🍅 欢迎点赞 👍 收藏 ⭐留言 &#x1f…

java font 字体 隶书_在font标记对,将字体设置成“隶书”,设置属性( )=隶书。...

字体夏季影响我国大部分地区的大气活动中心是太平洋高压和阿留申低压。Q0.0和Q0.1只要有一个继电器线圈先接通,记对另一个就不能再接通,从而保证任何时候两者都不能同时起动,这种控制方式称为()。按照工作方式的不同,设置书设置属…

HTML+CSS+JS实现 ❤️高光立体游戏卡片悬停ui特效❤️

🍅 作者主页:Java李杨勇 🍅 简介:Java领域优质创作者🏆、【java李杨勇】公号作者✌ 简历模板、学习资料、面试题库、技术互助【关注我,都给你】 🍅 欢迎点赞 👍 收藏 ⭐留言 &…

java获取500错误_HTTP 500错误

IIS5的HTTP 500内部服务器错误是我们经常碰到的错误之一,它的主要错误表现就是ASP程序不能浏览但HTM静态网页不受影响。另外当错误发生时,系统事件日志和安全事件日志都会有相应的记录。具体如下……一.错误表现IIS5的HTTP 500内部服务器错误是我们经常碰…

HTML+CSS+JS实现 ❤️流星天体动画场景特效❤️

🍅 作者主页:Java李杨勇 🍅 简介:Java领域优质创作者🏆、【java李杨勇】公号作者✌ 简历模板、学习资料、面试题库、技术互助【关注我,都给你】 🍅 欢迎点赞 👍 收藏 ⭐留言 &…

java的uuid有什么用_java – 什么是有效的UUID?

我生成UUID,并在我的代码中对正则表达式进行有效;我刚遇到困扰我的问题以下是生成UUID的代码(在mongodb上下文中)import java.util.UUID;... ...Document setOnInsert new Document(Params.sender, UUID.randomUUID()).append(Params.userDevice, userDevice).append(Params.h…

HTML+CSS+JS实现 ❤️创意几何love字母特效❤️

🍅 作者主页:Java李杨勇 🍅 简介:Java领域优质创作者🏆、【java李杨勇】公号作者✌ 简历模板、学习资料、面试题库、技术互助【关注我,都给你】 🍅 欢迎点赞 👍 收藏 ⭐留言 &…

java客户端连接请求发不出去_java – Spring:客户端发送的请求在语法上不正确()...

嗨,我在重定向期间收到下一个错误:The request sent by the client was syntactically incorrect浏览器显示的URL是:localhost:8080 / Project / menu / main / home / 0,这里我的类重定向首先 – “从”,第…