`

java 读xml

    博客分类:
  • java
阅读更多
应用环境webservice接口,通过xml传递数据。其实在使用公司接口时xml转换接口都被封装完成了。 下面是我测试本地代码是写的一点东东,以及遇到的一点问题。
我这里使用的是org.w3c.dom里面的接口读取xml的。
一、读取xml字符串
xmlPara= model.getXmlPara();
		//去不可见字符
		Pattern p = Pattern.compile("\\s*|\t|\r|\n");  
		Matcher m = p.matcher(xmlPara);  
		xmlPara = m.replaceAll("");  

		InputStream xmlIn =new ByteArrayInputStream(xmlPara.getBytes("utf-8"));
		InputSource xmlSource = new InputSource(xmlIn);
		DocumentBuilderFactory docBuilderFactory = DocumentBuilderFactory.newInstance();
		DocumentBuilder parser = docBuilderFactory.newDocumentBuilder();
		Document doc = parser.parse(xmlSource);
		Element root = doc.getDocumentElement();

第一点、在读取xml字符时因为有中文字符,必须根据实际编码来转换成输入流。第二点、必须去掉字符串中不可见字符,包括回车、空格、tab键等,这样在获取子节点是才不会出现莫名其妙的错误(比如:找的节点的名字不对,个数也不对)
二、xml字符串示例
<data>
	<orgNo>供电单位</orgNo>
	<countyCode>320101</countyCode>
	<certTypeCode>证件类型</certTypeCode>
	<certNo> 证件号码 </certNo>
	<custName>客户名称</custName>
	<elecAddr>用电地址</elecAddr>
	<contacts>
		<contact>
		<contactType>联系类型</contactType >
		<contactName>联系人</contactName>
		<mobile>手机号码</mobile>
		<addr>地址</addr>
		<tel>固定电话</tel>
		<email>电子邮箱</email>
		</contact>
	</contacts>
	<useArea>房屋使用面积</useArea>
	<postalCode>电费通知方式</postalCode>
	<consNo>用户编号</consNo>
	<resentPower>当前用电情况</resentPower>
	<legalAddr>法定地址</legalAddr>
	<legalPerson>法定代表人</legalPerson>
	<bankName></bankName >
	<bankNo>缴费银行账号</bankNo>
	<purchaseType>电费缴费方式</purchaseType >
	<appContent >申请说明</appContent>
</data>


对应的读取代码(  好记性不如烂笔头呵呵)

Map<String,Object> map = new HashMap<String,Object>();
		NodeList list = root.getChildNodes();
		Object nodeValue = null;
	    for (int i = 0; i < list.getLength(); ++i) {
			Node node = list.item(i);
			if (node != null) {
				String nodeName = node.getNodeName();
				if(nodeName.endsWith("s")){
					NodeList list1 = node.getChildNodes();
//					System.out.println(list1.);
					List<Map<String,String>> listIn = new ArrayList<Map<String,String>>();
					String node1Name = "";
					// 循环体,就是联系信息循环
					for(int j=0;j<list1.getLength();j++){
						//第一层循环
						Node node1 = list1.item(j);
						
						if(node1 != null ){
							node1Name = node1.getNodeName();
							NodeList list2 = node1.getChildNodes();
							System.out.println(list2.getLength());
							Map<String,String> map2= new HashMap<String,String>();
							for(int k=0;k<list2.getLength();k++){
								//第二次循环
								Node node3 = list2.item(k);
								if(node3 != null){
									Node child = node3.getFirstChild();
									String value = "";
									if ((child != null) && (child.getNodeValue() != null)) {
										value = child.getNodeValue();
							        }
									map2.put(node3.getNodeName(), value);
								}
							}// 第二次循环
							
							listIn.add(map2);
						}
					}//第一次循环
					map.put(nodeName+"#"+node1Name, listIn);
					continue;
				}
				Node child = node.getFirstChild();
				
				nodeValue = null;
		        if ((child != null) && (child.getNodeValue() != null)) {
		        	nodeValue = child.getNodeValue();
		        }
		        if(nodeValue == null){
		        	map.put(nodeName, "");
		        }else{
		        	map.put(nodeName, nodeValue);
		        }
			}
			
		}// end of 最外层循环
分享到:
评论

相关推荐

    java读xml

    总结来说,"java读xml"这个主题涵盖了Java中处理XML文件的基础知识,包括使用DOM、SAX解析器,以及可能涉及到的第三方库和工具。理解这些内容对于任何Java开发者来说都是必要的,因为XML在许多系统集成和数据交换...

    java读xml文件

    if(property!=null){ for(int i=0;i();i++){ Node stroke=property.item(i); //if(stroke.getNodeType()==Node.ELEMENT_NODE){ //(7)取得节点的属性值 String strokeOrderID=stroke.getAttributes()....

    java读xml,java操作xml文件

    这段代码读取名为"input.xml"的XML文件,并打印出所有员工节点的相关信息。 2. **SAX解析器**:使用`org.xml.sax.helpers.DefaultHandler`和`org.xml.sax.XMLReader`进行解析。SAX解析器通常适用于处理大型XML文件...

    java读取xml文件并存入数据库

    java从xml中读入数据并存入到sqlserver2005数据库中

    JAVA读XML:sax,dom,jdom,dom4j的比较以及选择.doc

    Java 读取XML文件时,有多种解析器可供选择,分别是SAX、DOM、JDOM和DOM4J。这些解析器各有优缺点,适用于不同的场景。 SAX(Simple API for XML)是一种基于事件驱动的解析器。它在解析XML文件时,会按顺序触发一...

    java 读xml文件

    ### Java 读取 XML 文件详解 #### 一、引言 在 Java 开发过程中,处理 XML 文件是一项常见的任务。XML(可扩展标记语言)是一种用于存储和传输数据的标准格式,被广泛应用于配置文件、数据交换等多种场景。Java ...

    java 读取XML

    在Java编程中,XML(可扩展标记语言)是一种常见的数据交换格式,用于存储和传输结构化数据。XML文件因其灵活性和可读性而被广泛应用于Web服务、配置文件以及数据序列化等领域。本篇文章将深入探讨如何使用Java来...

    java处理BOM头的XML

    Java处理带有BOM头的XML文件是一个常见的编程挑战,特别是在使用DOM4J解析XML文档时。BOM(Byte Order Mark)是Unicode字符集中的一个特殊字符,用于标识文本的编码方式。在UTF-16编码中,BOM通常出现在文件的开头,...

    java读写xml文件

    Java语言在处理XML文件时,通常使用两种主要的方法:DOM(Document Object Model)和SAX(Simple API for XML)。在本场景中,我们主要关注DOM方法,因为标题和描述提到了“在内存中构造一个DOM树”。DOM允许我们将...

    java 读 xml

    java读写xml文件 public static void main(String arga[]){ String[][] a_fn = new String[10][2]; a_fn = new ReadXmlTemp().ReadTempXml("f:\\temp\\testTemp.xml"); for(int i=0;i;i++){ System.out.print(a_...

    java中读写XML文件

    在Java编程语言中,XML(eXtensible Markup Language)是一种重要的数据交换格式,用于存储和传输结构化数据。XML文件具有自解释性,且独立于任何特定程序或硬件平台,这使得它在不同系统间交换数据时非常有用。本篇...

    Java读写xml java 读写xml文件操作, 简单易懂

    ### Java读写XML文件操作详解 在现代软件开发中,XML(可扩展标记语言)是一种广泛使用的数据交换格式,尤其在处理配置文件、数据存储以及跨平台数据交换时显得尤为重要。Java提供了多种读写XML文件的方法,包括SAX...

    java解释Xml,从数据库中读出来,解释Xml

    Java解释XML是从数据库中提取XML数据并对其进行解析和处理的过程,这一过程涉及到Java的XML处理API,如DOM、SAX和StAX等。在Java中,XML被广泛用于存储和交换结构化数据,尤其是在与数据库交互时。下面将详细介绍这...

    java xml拼接

    8. **XML格式化**:使用`Transformer`将DOM树转换为XML字符串,可以设置格式化参数,如缩进、换行,使XML更易读。 9. **关闭资源**:完成XML生成后,记得关闭`ResultSet`、`Statement`和数据库连接,以释放系统资源...

    java 操作xml文件(包含xml文件和对应jar包)

    而StAX则允许程序以流式方式处理XML,既可以读也可以写,具有较低的内存占用。 在描述中提到了一个用于操作XML的jar包,这可能是指如JDOM、DOM4J、Apache Commons Digester或Woodstox等第三方库。这些库提供了更高...

    java四种xml读写demo

    本文将深入探讨Java中处理XML的四种常见方法:DOM(Document Object Model)、SAX(Simple API for XML)、StAX(Streaming API for XML)以及JAXB(Java Architecture for XML Binding)。我们将通过具体的代码示例...

    JAVA调用webservice并解析xml

    StAX允许你流式处理XML,既可读又可写。 例如,使用DOM解析XML: ```java DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); DocumentBuilder builder = factory.newDocumentBuilder()...

    java文件生成xml文档

    4. **格式化输出**:为了使XML更易读,可以使用`Format`类进行格式化: ```java Format prettyFormat = Format.getPrettyFormat(); XMLOutputter xmlOutput = new XMLOutputter(prettyFormat); ``` 5. **写入...

Global site tag (gtag.js) - Google Analytics