??xml version="1.0" encoding="utf-8" standalone="yes"?>
java中相对\径,l对路径问题ȝ(verygood)
http://www.aygfsteel.com/efine66/archive/2006/12/12/87097.html
如何在java中用相对\径?
http://dev.csdn.net/develop/article/39/39681.shtm
通过虚拟路径或相对\径读取一个xml文gQ避免硬~码
http://www.128kj.com/article/article5/7D66983DD9DD98A7753422A3A527FB6D.htm?id=438
java使用相对路径dxml文gQ?br />一、xml文g一般的存放位置有三个:
1.攑֜WEB-INF下;
2.xml文g攑֜/WEB-INF/classes目录下或classpath的jar包中Q?br />3.攑֜与解析它的javacd一个包中,不一定是classpathQ?/font>
二、相对应的两U用相对\径的dҎ(gu)Q?/font>
Ҏ(gu)一Q(未验证)
xml文g攑֜WEB-INF目录下,然后
E序代码Q?
InputStream is=getServletContext().getResourceAsStream( "/WEB-INF/xmlfile.xml" );
Ҏ(gu)二:xml文g攑֜/WEB-INF/classes目录下或classpath的jar包中Q则可以使用ClassLoader的静态方法getSystemResourceAsStream(String s)dQ?br />E序代码Q?br />String s_xmlpath="com\xml\hotspot.xml";
InputStream in=ClassLoader.getSystemResourceAsStream(s_xmlpath);
Ҏ(gu)三:xml在随意某个包路径下:
String s_xmlpath="com\xml\hotspot.xml";
ClassLoader classLoader=HotspotXmlParser.class.getClassLoader();
InputStream in=classLoader.getResourceAsStream(s_xmlpath);
问题2Q解析xml文gӞ如何用相对\径找到该自己定义的xml文gQ?br />如果该xml文g和jsp文g攑֜一P那么可以通过jsp的HttpServletRequest方式Ҏ(gu)相对路径dQ但是若该xml文g和java文g在同一个包中又如何处理呢?另外Q用HttpServletRequest方式的java~码具体是如何实现的呢?
dom4j API和源码、例子下载网址:
http://sourceforge.net/project/showfiles.php?group_id=16035
下蝲dom4j-1.6.1.zipQ带源码和例子?/p>
一.dom4j解析xml
q部分内容之前已l写q,作ؓ完整性,仅仅在此列出上次的代码:
package com.ict.shrd;
//import org.dom4j.Document;
import org.dom4j.Element;
import org.dom4j.Attribute;
import java.util.List;
import java.util.Iterator;
import org.dom4j.dom.DOMDocument;
import org.dom4j.io.XMLWriter;
import java.io.*;
import org.dom4j.DocumentException;
import org.dom4j.io.SAXReader;
import java.io.*;
import java.util.*;
import org.dom4j.*;
import org.dom4j.io.*;
public class HjbhTableNameList{
private String enName="";
private String cnName="";
private HashMap map=new HashMap();
public String getEnName() {
return enName;
}
public HashMap getTableListFromXml(File f){
try{
SAXReader reader = new SAXReader();
Document doc = reader.read(f);
Element root = doc.getRootElement();
Element firstChild=root.element("hjbh");
for (Iterator i = firstChild.elementIterator("tableName"); i.hasNext();) {
Element foo = (Element) i.next();
this.enName=foo.attributeValue("enName");
this.cnName=foo.getText();
map.put(enName,cnName);
}
} catch (Exception e) {
e.printStackTrace();
}
return map;
}
public static void main(String arge[]) {
File f = new File("E:\\jiangcm\\workspace-forict\\JavaBasis\\xml\\shrd.xml");
HashMap map=new HashMap();
HjbhTableNameList tableList=new HjbhTableNameList();
map=tableList.getTableListFromXml(f);
Set enNameSet=map.keySet();
String enName="";
for (Iterator i = enNameSet.iterator(); i.hasNext();) {
enName=(String)i.next();
//System.out.println(enName);
System.out.println(map.get(enName));
}
}
}
二。dom4j生成xml?wi)?br />完整代码:
package xml;
import org.dom4j.*;
import java.io.*;
public class XmlCreator{
public void createXML(String fileName) {
Document doc = org.dom4j.DocumentHelper.createDocument();
Element root = doc.addElement("book");
root.addAttribute("name", "我的图书");
Element childTmp;
childTmp = root.addElement("price");
childTmp.setText("21.22");
Element writer = root.addElement("author");
writer.setText("李四");
writer.addAttribute("ID", "001");
try {
//注意q里使用的是FileOutputStreamQ而不是FileWriter,因ؓ涉及到编码问?br /> //详细见“dom4j~码问题解决”篇?/p>
org.dom4j.io.XMLWriter xmlWriter = new org.dom4j.io.XMLWriter(
new FileOutputStream(fileName));
xmlWriter.write(doc);
xmlWriter.close();
}
catch (Exception e) {
System.out.println(e);
}
}
public static void main(String[] args){
XmlCreator xmlCreator=new XmlCreator();
xmlCreator.createXML("E:\\jiangcm\\book.xml");
}
}
dom4j ?xerces-2.4.0 利用schema验证xml问题
http://www2.matrix.org.cn/thread.shtml;jsessionid=E282E65FCE68F3A4D25B0962DCE6F813?topicId=45719&forumId=13
DOM4J 验证XML Schema Q我要的成功 的blogQ?br />http://kingofhawks.spaces.live.com/?_c11_BlogPart_blogpart=blogview&_c=BlogPart&partqs=cat%3d%25e8%25ae%25a1%25e7%25ae%2597%25e6%259c%25ba%25e4%25b8%258e%2bInternet
Xerces-Java 2 中的 XML Schema 验证 (dQ?a href="mailto:jchunmei19@126.com/05602050">jchunmei19@126.com/05602050)
http://www-128.ibm.com/developerworks/cn/views/xml/tutorials.jsp?cv_doc_id=84985
xsd验证
一Qjava中如何用dom4j的SAXReader实现验证Q?/p>
1.xml验证用于验证W合xml语法格式的xml文g是否W合特定的xml Schema以及数据cd{,xml验证主要有两U方式,DTD和XSDQ现采用的是XSD方式。xsd文g的语法格式和~写参考“xsd学习(fn)W记”这,现在介绍准备好了xsd文g之后Qjava中如何用dom4j的SAXReader实现验证。下面进入正文:
2.M技术的介绍Q代码都是最直观的,下面来直接看SAXReader实现验证的代码: XMLErrorHandler errorHandler = new XMLErrorHandler(); 3.对上qC码的注释Q?/p>
主要思\Q设|SAXReader支持验证 -〉得到xsd文g的\?-〉读入要验证的xml文g -〉OKQ; 验证程Q?/p>
-〉设|支持验证; -〉设|支持验证的几个feature的| -〉设|xsd文g路径的Property|q样可以依据xsd文gq行验证了; -〉读入要验证?xml文g或xml格式的字W串Q?/p>
*若验证的?xml文gQ则reader.read(param)中的param为xml文g的\径,q个xml文g的\径应该设|ؓ相对路径Q(xml相对路径如何获取和表C个问题有待解冻I *若验证的是字W串Q则要把字符串{换ؓInputStreamcdQ这是readҎ(gu)的参数要求。(详见dom4j api docQ? 那么怎么把字W串转换为InputStreamcd呢? 法一Q?/p>
我们知道QByteArrayInputStream(byte[] buf)Ҏ(gu)可以使byte字节码{为InputStream,那么我们先通过getBytes()Ҏ(gu)把字W串转ؓbyte[]cdQ再通过ByteArrayInputStream(byte[] buf)Ҏ(gu)转ؓInputStream就ok了! String xmldescription = (String) obj; 法二Q?br />InputStream in=TAEncodeDecoderFactory.class.getResourceAsStream("encoder_decoder_mapping.xml");
-〉xml validation is okQ?/p>
?内容补充Q?/p>
参考资料“DOM4J 验证XML Schema Q我要的成功 的blogQ?br />http://kingofhawks.spaces.live.com/?_c11_BlogPart_blogpart=blogview&_c=BlogPart&partqs=cat%3d%25e8%25ae%25a1%25e7%25ae%2597%25e6%259c%25ba%25e4%25b8%258e%2bInternet”中提到“如何读取Class path下的xsd文g:需要实现EntityResolver 接口,在resolveEntity()中读取当前类路径下的xsd文g,q返回InputSource instance.”的问题Q下面谈谈对EntityResolver的理解: q段代码是关于实体解析器用来解析外部实体引用的,在这里ƈ不需要?/p>
注释Q?br />1.关于什么是实体Q什么是外部实体Q详见资料: 2.关于实体解析器如何用,详见资料Q?br />技巧:使用实体解析?br />http://www-128.ibm.com/developerworks/cn/xml/tips/x-tipent/index.html
public static boolean isXmlOK(String xsdFile, byte[] tagetXml) throws SAXException, IOException, DocumentException
{
boolean flag = true;
SAXReader reader = new SAXReader();
reader.setValidation(true);
reader.setFeature(" reader.setFeature(" reader.setProperty(" //reader.setProperty("
reader.setErrorHandler(errorHandler);
InputStream in = new ByteArrayInputStream(tagetXml);
InputStreamReader utf8In=new InputStreamReader(in,"utf-8");
//Document document = reader.read(in);
reader.read(utf8In);
XMLWriter writer = new XMLWriter(OutputFormat.createPrettyPrint());
if (errorHandler.getErrors().hasContent()) {
flag = false;
//writer.write(errorHandler.getErrors());
} else {
System.out.println("Xml is OK!.");
}
return flag;
}
SAXReader reader = new SAXReader();
reader.setValidation(true);
注明QSAXReader的各个函数的作用和用法详见dom4j api doc?/p>
语法格式Qpublic void setProperty(java.lang.String name,java.lang.Object value)
byte[] xmlMsgBytes =xmldescription.getBytes();
…?br />InputStream in = new ByteArrayInputStream(xmlMsgBytes);
-〉这样SAXReader可以根据xsd文gҎ(gu)d的xml信息q行验证了!
-〉接下来Q还可以使用XMLErrorHandler和XMLWriterq两个类在控制台输出错误提示信息Q?/p>
xml实用大全
http://phpso.com/data/htm/XML/408.htm
?未解决的问题:
如何获取xml相对路径Q?br />
]]>
Dom4j ~码问题d解决 作者:lonsen
http://www.5inet.net/Develop/Java/036579,Dom4j_BianMaWenDiCheDeJieJue.aspx
“中文问题没商量”之Dom4j中的~码问题
作? 盛忠良?
http://blog.lupaworld.com/blog/htm/do_showone/tid_2261.html
JAVA~码问题的一些理?br />http://www.jspcn.net/htmlnews/11049393353751902.html
用dom4j解析中文字符Ӟ出现org.dom4j.DocumentException: Invalid byte 1 of 1-byte UTF-8 sequence.各位帮小弟看?br />http://dev.9983.com/ku/5403/4683267.asp
自己的ȝQ?br />1、“org.dom4j.DocumentException: Invalid byte 1 of 1-byte UTF-8 sequence.”异常分析和解决Q?br />分析Q?br />该异常由下面的reader.read(file);语句抛出Q?br />SAXReader reader = new SAXReader();
Document doc = reader.read(file);
产生q个异常的原因是Q?br />所ȝxml文g实际是GBK或者其他编码的Q而xml内容中却?lt;?xml version="1.0" encoding="utf-8"?>指定~码为utf-8Q所以就报异怺Q?/p>
注释Q参考网上的《Java/J2EE中文问题l极解决之道》一文,~码问题原因应该是:操作pȝ~码为GBKQ而xml指定为utf-8QSAXReader使用pȝ的默认编码GBKQ所以存在需要{换编码的问题Q也p然会出现q了!解决Q让文g~码和java 操作该文件的接口的编码一_
解决Q?br />情况一Q该xml文g由dom4j生成Q?/p>
解决Ҏ(gu)Q用 org.dom4j.io.XMLWriter xmlWriter = new org.dom4j.io.XMLWriter(
new FileOutputStream(fileName));
代替
xmlWriter = new XMLWriter(new FileWriter(fileName));
Q指定编码ؓutf-8生成xml文gQ?/p>
详细参考资?Q?br />Dom4j ~码问题d解决 作者:lonsen
http://www.5inet.net/Develop/Java/036579,Dom4j_BianMaWenDiCheDeJieJue.aspx
情况?解析从jsp面中读取到的用戯入的xml描述内容Ӟreader.read()抛出异常Q?/p>
解决Ҏ(gu)Q?br />调用read前先把xml内容转ؓutf-8~码Q(使用支持~码格式的函敎ͼ
public void validate(FacesContext context, UIComponent component, Object obj)
throws ValidatorException {
String xmldescription = (String) obj;
byte[] bytes =xmldescription.getBytes();
RelationXmlParser.isXmlOK("E:\\jiangcm\\templateXMLSchema.xsd",bytes);
…?br /> }
public static boolean isXmlOK(String xsdFile, byte[] tagetXml) throws SAXException, IOException, DocumentException
{
SAXReader reader = new SAXReader();
…?br /> InputStream in = new ByteArrayInputStream(tagetXml);
InputStreamReader utf8In=new InputStreamReader(in,"utf-8");
…?br /> }
疑问Q?br />1.如何在文字上实现onClick事gQ比如说Q一点击“环境保护”,出现所有的表名Q一点击“表名”,出现相应的表数据;因ؓ它不?lt;select>{标{一P可以Ҏ(gu)idp获取它们的value|
HashMap|址:
有关HashMap的用问?br />http://zhidao.baidu.com/question/3288995.html
HashMap使用一?br />http://www.128kj.com/article/article1/62DE24F2E9419FA8D9386750E9F68451.htm?id=1342
http://leeboo.spaces.live.com/