dom paser
dom paser
/**
*
*/
package ec.utils; import java.io.BufferedInputStream;
import java.io.ByteArrayInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStreamWriter;
import java.io.Writer;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.regex.Matcher;
import java.util.regex.Pattern; import ec.application.ECSigleton;
import ec.domain.common.conversion.ConvType.Namespace;
import ec.export.XMLHelper;
import ec.product.ECItem; import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.transform.OutputKeys;
import javax.xml.transform.Result;
import javax.xml.transform.Source;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerConfigurationException;
import javax.xml.transform.TransformerException;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult; import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.xml.sax.SAXException; /**
* @author yangff
*
*/
public class ShowDBMwithRT { public static ShowDBMwithRT instance;
public ShowDBMwithRT getInstance()
{
if(instance==null)
{
instance=new ShowDBMwithRT();
}
return instance;
} //add "DBM" before "RT"
public String addDBMbeforeRT(String passstr)
{
//Air Handler-RT 18 MF</model>
String strdbm=passstr;//RoofTop-RT 18 MF String strfront="";
String strafter=""; strfront=strdbm.substring(, strdbm.indexOf("-")); //Air Handler-
strafter="-DBM "+strdbm.substring(strdbm.indexOf("-")+); strdbm=strfront+strafter;
return strdbm;
} /*
<field>
<name>Model #</name>
<value>RT 18 MF</value>
<type>Dotted</type>
</field> <model>Air Handler-RT 18 MF</model> <field>
<name>Air handler model</name>
<value>RT 18 MF</value>
<type>Dotted</type>
</field> <description>RT 18 MF</description>
*/
//process xml for preprint
public Document processXmlforprint(String passxmlstr)
{
Document xmlDoc=null; try {
ByteArrayInputStream bis = new ByteArrayInputStream(passxmlstr.getBytes("UTF-8"));
xmlDoc = DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(bis);
} catch (Throwable e) {
try {
throw new Exception("MSG_COULDN'T_PARSE_XML", e);
} catch (Exception e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
} NodeList nlds=xmlDoc.getElementsByTagName("description");
showElem(nlds);
nlds=xmlDoc.getElementsByTagName("value");
showElem(nlds);
nlds=xmlDoc.getElementsByTagName("model");
showElem(nlds); return xmlDoc; } public static void showElem(NodeList nl){ for(int i=;i<nl.getLength();i++){ Node n=nl.item(i);
if(n.hasChildNodes()){
// System.out.print("<"+n.getNodeName()+">");
//递归
showElem(n.getChildNodes());
// System.out.print("</"+n.getNodeName()+">");
}else{ //判断是不是文本
if(n.getNodeType()==Node.TEXT_NODE){ if(n.getNodeValue().indexOf("RT")!=-)
{ if(n.getNodeValue().startsWith("Air Handler-RT"))
{
//<model>Air Handler-RT 18 MF</model>
String strmodel=n.getNodeValue();
String strfront="";
String strafter=""; strfront=strmodel.substring(, strmodel.indexOf("-")); //Air Handler-
strafter="-DBM "+strmodel.substring(strmodel.indexOf("-")+); strmodel=strfront+strafter; n.setNodeValue(strmodel); }
else
{
n.setNodeValue("DBM "+n.getNodeValue());
} break;
} //System.out.print(n.getNodeValue()); }else{
// System.out.print("<"+n.getNodeName()+">");
//System.out.print("</"+n.getNodeName()+">");
}
break;
}
}
} /*
<field>
<name>Compressors (Qty)</name>
<value>5SH240_4(4)</value>
<type>Dotted</type>
</field>
*/
//ACDS COMPRESS CHANGE
public Document processXmlforprintBeta(String passxmlstr)
{
Document xmlDoc=null; try {
ByteArrayInputStream bis = new ByteArrayInputStream(passxmlstr.getBytes("UTF-8"));
xmlDoc = DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(bis);
} catch (Throwable e) {
try {
throw new Exception("MSG_COULDN'T_PARSE_XML", e);
} catch (Exception e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
} NodeList nlds=xmlDoc.getElementsByTagName("value");
showElem_ACDS(nlds); return xmlDoc; } public void showElem_ACDS(NodeList nl){ for(int i=;i<nl.getLength();i++){ Node n=nl.item(i);
if(n.hasChildNodes()){
// System.out.print("<"+n.getNodeName()+">");
//递归
showElem_ACDS(n.getChildNodes());
// System.out.print("</"+n.getNodeName()+">");
}else{ //判断是不是文本
if(n.getNodeType()==Node.TEXT_NODE){ if((n.getNodeValue().indexOf("SH")!=- || n.getNodeValue().indexOf("HLJ")!=-)&& n.getNodeValue().contains("_") && n.getNodeValue().contains("(") && n.getNodeValue().contains(")")){ String strmodel=n.getNodeValue();
if(strmodel.contains("5SH"))
{
strmodel=strmodel.replaceAll("5SH", "SH");
} if(strmodel.contains("SH300"))
{
strmodel=strmodel.replaceAll("SH300", "SH295");
}
if(strmodel.contains("/")){ String a=strmodel.substring(,strmodel.indexOf("_"));
String b=strmodel.substring(strmodel.indexOf("("),strmodel.indexOf("/"));
String c=strmodel.substring(strmodel.indexOf("/"),strmodel.lastIndexOf("_"));
String d=strmodel.substring(strmodel.lastIndexOf("("),strmodel.lastIndexOf(")")+);
strmodel= a+b+c+d; }else{
String a=strmodel.substring(,strmodel.indexOf("_"));
String b=strmodel.substring(strmodel.indexOf("(")); strmodel= a+b;
} n.setNodeValue(strmodel);
break;
}
//System.out.print(n.getNodeValue()); }else{
// System.out.print("<"+n.getNodeName()+">");
//System.out.print("</"+n.getNodeName()+">");
}
break;
}
}
}
// FOR AVX
public Document processXmlforprintAVX(String passxmlstr)
{
Document xmlDoc=null; try {
ByteArrayInputStream bis = new ByteArrayInputStream(passxmlstr.getBytes("UTF-8"));
xmlDoc = DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(bis);
} catch (Throwable e) {
try {
throw new Exception("MSG_COULDN'T_PARSE_XML", e);
} catch (Exception e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
} NodeList nlds=xmlDoc.getElementsByTagName("value");
showElem_AVX(nlds); return xmlDoc; } public void showElem_AVX(NodeList nl){ for(int i=;i<nl.getLength();i++){ Node n=nl.item(i);
if(n.hasChildNodes()){
// System.out.print("<"+n.getNodeName()+">");
//递归
showElem_AVX(n.getChildNodes());
// System.out.print("</"+n.getNodeName()+">");
}else{ //判断是不是文本
if(n.getNodeType()==Node.TEXT_NODE){ String strmodel=n.getNodeValue();
//System.out.println("********"+strmodel);
if(strmodel.contains("cm"))
{
strmodel=strmodel.replaceAll("cm", "MSC");
n.setNodeValue(strmodel);
break;
} }else{
// System.out.print("<"+n.getNodeName()+">");
//System.out.print("</"+n.getNodeName()+">");
}
break;
}
}
} public static Namespace getNamespaceFromMap(String name)
{
Namespace name_str= null;
Iterator<String> it=ECItem.mFamate.keySet().iterator();
while(it.hasNext())
{
String tmp= it.next().toString();
if(tmp.toUpperCase().indexOf(name.toUpperCase())!=-)
{
name_str=(Namespace) ECItem.mFamate.get(tmp);
break;
}
}
return name_str;
}
//==========================================xml=======common method [1]=====================================
/**
* common method "getfromXml " get target from Xml
*
* @param args example:
*
* {
* <version>SPEC ver. 7.0, 26469</version>
* String discription:version
* String strfind :"SPEC ver"
* return "SPEC ver. 7.0, 26469"
* }
*
*/ static String targetstr=""; public static String getfromXml(String passxmlstr,String discription,String strfind)
{ String result="";
Document xmlDoc=null; try {
ByteArrayInputStream bis = new ByteArrayInputStream(passxmlstr.getBytes("UTF-8"));
xmlDoc = DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(bis);
} catch (Throwable e) {
try {
throw new Exception("MSG_COULDN'T_PARSE_XML", e);
} catch (Exception e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
} NodeList nlds=xmlDoc.getElementsByTagName(discription); result=showElem_target(nlds,strfind);
return result;
} public static String showElem_target(NodeList nl,String strfind){
boolean flag=false;
for(int i=;i<nl.getLength();i++){ Node n=nl.item(i);
if(n.hasChildNodes()&&!flag){
// System.out.print("<"+n.getNodeName()+">"); showElem_target(n.getChildNodes(),strfind);
// System.out.print("</"+n.getNodeName()+">");
}else{ if(n.getNodeType()==Node.TEXT_NODE){
//System.out.print(n.getNodeValue());
if(n.getNodeValue().indexOf(strfind)!=-){
targetstr=n.getNodeValue();
flag=true;
break;
} }else{
// System.out.print("<"+n.getNodeName()+">");
//System.out.print("</"+n.getNodeName()+">");
}
break;
}
}
return targetstr;
}
//==========================================xml=======common method [1]===================================== //==========================================xml=======common method [2]===================================== /**
* common method "findbynode" get target from Xml 2
*
* @param args example:
*
* {
* <field> //field-->bignode
* <name>Motor hand</name> //name-->clum1 , "Motor hand"-->itemvalue
* <value>Right</value> //value-->clum2
* <type>Dotted</type>
* </field>
* }
*
*/
public static ArrayList findbynode(String passxmlstr,String bignode,String clum1,String itemvalue,String clum2)
{ ArrayList<String> result=new ArrayList<String>();
/*
bignode="field";
clum1="name";
clum2="value";
*/ ArrayList<Map> al=paserxmlbynode(passxmlstr,bignode);
for(Map m : al)
{
if(m.containsKey(clum1)&&m.get(clum1).toString().equals(itemvalue))
{
result.add(m.get(clum2).toString());
//break;
}
} //System.out.println(result);
return result;
} public static ArrayList paserxmlbynode(String passxmlstr,String bignode)
{
Document xmlDoc=null; try {
ByteArrayInputStream bis = new ByteArrayInputStream(passxmlstr.getBytes("UTF-8"));
xmlDoc = DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(bis);
} catch (Throwable e) {
try {
throw new Exception("MSG_COULDN'T_PARSE_XML", e);
} catch (Exception e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
} // System.out.print(passxmlstr);
ArrayList<Map> listitem=new ArrayList<Map>(); // find bignode
NodeList nlds=xmlDoc.getElementsByTagName(bignode);
int size =nlds.getLength();
for(int j=;j<size;j++)
{
Node nd=nlds.item(j).getFirstChild().getNextSibling();
Map<String,String> map=new HashMap<String,String>();
while(nd!=null)
{
map.put(nd.getNodeName(), nd.getFirstChild().getNodeValue());
nd= nd.getNextSibling().getNextSibling();
}
listitem.add(map);
} // System.out.print(listitem.size());
return listitem;
}
public static ArrayList findbynode(Document xmlDoc,String bignode,String clum1,String itemvalue,String clum2)
{ ArrayList<String> result=new ArrayList<String>();
/*
bignode="field";
clum1="name";
clum2="value";
*/ ArrayList<Map> al=paserxmlbynode(xmlDoc,bignode);
for(Map m : al)
{
if(m.containsKey(clum1)&&m.get(clum1).toString().equals(itemvalue))
{
result.add(m.get(clum2).toString());
//break;
}
} //System.out.println(result);
return result;
}
public static ArrayList paserxmlbynode(Document xmlDoc,String bignode)
{
// System.out.print(passxmlstr);
ArrayList<Map> listitem=new ArrayList<Map>(); // find bignode
NodeList nlds=xmlDoc.getElementsByTagName(bignode);
int size =nlds.getLength();
for(int j=;j<size;j++)
{
Node nd=nlds.item(j).getFirstChild().getNextSibling();
Map<String,String> map=new HashMap<String,String>();
while(nd!=null)
{
map.put(nd.getNodeName(), nd.getFirstChild().getNodeValue());
nd= nd.getNextSibling().getNextSibling();
}
listitem.add(map);
} // System.out.print(listitem.size());
return listitem;
}
//=========================================common method=============================================
/*
* return description content "1 Access panel(s) standard" <price description="1 Access panel(s) standard"
list="0.0" markupType="0" metric="uEnglish"
net="0.0" shipLoose="false"
/>
*/
public static List<String> testfindnodebyattr(String passxmlstr,String node,String strAttr) { /*
String path="D:\\Task\\filter-init\\filter.xml";
BufferedReader bufReader=null;
String passxmlstr="";
String temps=""; try {
bufReader = new BufferedReader(new FileReader(path));
while((temps=bufReader.readLine())!=null){
passxmlstr+=temps;
} } catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
finally{
try {
bufReader.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
*/
String result="";
Document xmlDoc=null; try {
ByteArrayInputStream bis = new ByteArrayInputStream(passxmlstr.getBytes("UTF-8"));
xmlDoc = DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(bis);
} catch (Throwable e) {
try {
throw new Exception("MSG_COULDN'T_PARSE_XML", e);
} catch (Exception e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
} NodeList nlds=xmlDoc.getElementsByTagName(node); return showAttr_target(nlds,strAttr);
} //=========================================common method=============================================
public static List showAttr_target(NodeList nl,String strAttr)
{
List l=new ArrayList();
String targetstr="";
for(int i=;i<nl.getLength();i++)
{
Node n=nl.item(i);
targetstr=n.getAttributes().getNamedItem(strAttr).toString();
l.add(targetstr);
}
return l;
}
// =========================================common method============================================= public static String changeCompName(String compName){
String NewCompName=""; //cm1230NHL6X7K(2)
//String tests="cm1230NHL6X7K(2)";
//compName=tests; boolean twice=false;
if(compName.indexOf("(")>=) twice=true;
Pattern p=Pattern.compile("([a-z]+)(\\d+)");
Matcher m=p.matcher(compName);
while(m.find()) {
NewCompName=m.group();
} if(twice){
Pattern p2=Pattern.compile("(?<=\\()[^\\)]+");
Matcher m2=p2.matcher(compName);
while(m2.find()) {
NewCompName+="("+m2.group()+")";
}
}
if(NewCompName.indexOf("cm")>=)
{
NewCompName=NewCompName.replaceAll("cm", "MSC");
}
//System.out.println(NewCompName);
return NewCompName;
} public static void main(String[] args)
{ ShowDBMwithRT sdrt=new ShowDBMwithRT();
//sdrt.getInstance().processXmlforprint("");
sdrt.getInstance().changeCompName("");
} }
dom paser的更多相关文章
- Java sax、dom、pull解析xml
-------------------------------------SAX解析xml---------------------------------- >Sax定义 SAX是一个解析速度 ...
- 解析XML的几种方式:DOM、SAX、PULL
DOM解析 解析器读入整个文档,然后构建一个主流内存的树结构,然后代码就可以使用dom接口来操作这个树结构. 优点: 整个文档树在内存中,便于操作:支持删除.修改.重新排列等多种功能. 通过树形结构存 ...
- 关于DOM的操作以及性能优化问题-重绘重排
写在前面: 大家都知道DOM的操作很昂贵. 然后贵在什么地方呢? 一.访问DOM元素 二.修改DOM引起的重绘重排 一.访问DOM 像书上的比喻:把DOM和JavaScript(这里指ECMScri ...
- 读书笔记:JavaScript DOM 编程艺术(第二版)
读完还是能学到很多的基础知识,这里记录下,方便回顾与及时查阅. 内容也有自己的一些补充. JavaScript DOM 编程艺术(第二版) 1.JavaScript简史 JavaScript由Nets ...
- 页面嵌入dom与被嵌入iframe的攻防
1.情景一:自己的页面被引入(嵌入)至别人的页面iframe中 if(window.self != window.top){ //url是自己页面的url window.top.location.hr ...
- 通俗易懂的来讲讲DOM
DOM是所有前端开发每天打交道的东西,但是随着jQuery等库的出现,大大简化了DOM操作,导致大家慢慢的“遗忘”了它的本来面貌.不过,要想深入学习前端知识,对DOM的了解是不可或缺的,所以本文力图系 ...
- HTML DOM 介绍
本篇主要介绍DOM内容.DOM 节点.节点属性以及获取HTML元素的方法. 目录 1. 介绍 DOM:介绍DOM,以及对DOM分类和功能的说明. 2. DOM 节点:介绍DOM节点分类和节点层次. 3 ...
- HTML DOM 对象
本篇主要介绍HTML DOM 对象:Document.Element.Attr.Event等4个对象. 目录 1. Document 对象:表示文档树的根节点,大部分属性和方法都是对元素进行操作. 2 ...
- 重撸js_2_基础dom操作
1.node 方法 返回 含义 nodeName String 获取节点名称 nodeType Number 获取节点类型 nodeValue String 节点的值(注意:文本也是节点) 2.inn ...
随机推荐
- SQL经典短小代码收集
--SQL Server:Select TOP N * From TABLE Order By NewID() --开头到N条记录Select Top N * From 表--N到M条记录(要有主索引 ...
- yuv rgb 像素格式1
===========大小============= 一般,直接采集到的视频数据是RGB24的格式 RGB24一帧的大小size=width×heigth×3 Byte, RGB32的size=wid ...
- AppleWatch开发教程之Watch应用对象新增内容介绍以及编写运行代码
AppleWatch开发教程之Watch应用对象新增内容介绍以及编写运行代码 添加Watch应用对象时新增内容介绍 Watch应用对象添加到创建的项目中后,会包含两个部分:Watch App 和 Wa ...
- 简单几何(半平面交+二分) LA 3890 Most Distant Point from the Sea
题目传送门 题意:凸多边形的小岛在海里,问岛上的点到海最远的距离. 分析:训练指南P279,二分答案,然后整个多边形往内部收缩,如果半平面交非空,那么这些点构成半平面,存在满足的点. /******* ...
- HDU2222 Keywords Search(AC自动机模板)
AC自动机是一种多模式匹配的算法.大概过程如下: 首先所有模式串构造一棵Trie树,Trie树上的每个非根结点都代表一个从根出发到该点路径的字符串. 然后每个结点都计算出其fail指针的值,这个fai ...
- BZOJ3829 : [Poi2014]FarmCraft
d[x]表示走完x的子树并回到x所需的时间 f[x]表示从走到x开始计时,x子树中最晚的点安装完的最早时间 d[x]=sum(d[i]+2),i是x的孩子 f[x]的计算比较复杂: 考虑将x的各棵子树 ...
- 【BZOJ】1901: Zju2112 Dynamic Rankings(区间第k小+树状数组套主席树)
http://www.lydsy.com/JudgeOnline/problem.php?id=1901 首先还是吐槽时间,我在zoj交无限tle啊!!!!!!!!我一直以为是程序错了啊啊啊啊啊啊. ...
- ECMAScript继承
继承的定义 ECMAScript 实现继承可以从父类入手,所有开发者定义的类都可作为父类,出于安全考虑,本地类和宿主类不能作为父类,因为容易收到恶意攻击 创建只是用于给子类提供通用函数的父类被看作抽象 ...
- JavaScript_解决safari浏览器window.open无法实现的问题
解决 safari window.open 无法实现的问题 先说下问题是什么吧: safari 中没办法在回调函数里面执行window.open, 原因是safari的安全机制将其阻挡了(具体的原因可 ...
- Mina工具类v1.5
package com.cucpay.fundswap.util; import java.net.InetSocketAddress; import java.nio.charset.Charset ...