📄 schemaparserutils.java
字号:
/*
* SchemaParserUtils.java
*
* Created on 10 December 2002, 14:26
*/
package ke.defaultimpl.utils.xml.parsing;
import org.apache.commons.digester.*;
import org.xml.sax.*;
import java.util.*;
import java.io.*;
/**
*
* @author James Cunningham
*/
public class SchemaParserUtils
{
/**
* @param schemaFile
* @return
* @throws IOException
* @throws SAXException
* @throws IncorrectSchemaException
*/
public static SchemaBean getAttributesFromSchema(String schemaFile) throws IOException, SAXException, IncorrectSchemaException
{
File file = null;
if(!(file = new File(schemaFile)).exists())
throw new IOException("The specified schema file [" + schemaFile + "] could not be found");
if(dg == null) init();
HashMap nameTypeMapping = new HashMap(15);
dg.push(nameTypeMapping);
dg.parse(file);
SchemaBean schemaBean = new SchemaBean();
if(nameTypeMapping.get("Schema_Name") != null)
{
schemaBean.setSchemaName((String)nameTypeMapping.get("Schema_Name"));
Set names = nameTypeMapping.keySet();
String[] nameArray = new String[names.size()-1]; // We don't want to include the schemaName mapping
String[] typeArray = new String[names.size()-1];
int index = 0;
for(Iterator i = names.iterator(); i.hasNext();)
{
String name = (String)i.next();
if(!name.equals("Schema_Name"))
{
nameArray[index] = name;
typeArray[index] = (String)nameTypeMapping.get(name);
index++;
}
}
schemaBean.setAttributeName(nameArray);
schemaBean.setAttributeType(typeArray);
}
else
{
//clean up as usual
dg.clear();
nameTypeMapping = null;
throw new IncorrectSchemaException("Error: Schema type not valid");
}
dg.clear();
nameTypeMapping = null;
return schemaBean;
}
/**
*
*/
private static void init() {
dg = new Digester();
dg.setValidating(false);
dg.addRule("xsd:schema/xsd:element", new MapSchemaNameRule());
dg.addRule("xsd:schema/xsd:element/xsd:complexType/xsd:sequence/xsd:element", new MapNameTypeRule());
dg.addRule("xsd:schema/xsd:element/xsd:simpleType", new CreatePlaceHolderRule("simpleType"));
dg.addRule("xsd:schema/xsd:element/xsd:simpleType/xsd:list", new MapArrayTypeRule());
}
//*********************************************************************
private static Digester dg = null;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -