2009年2月23日星期一

使用XPATH从XML/XHTML中提取数据

import java.io.StringReader;

import javax.xml.xpath.XPath;
import javax.xml.xpath.XPathConstants;
import javax.xml.xpath.XPathExpression;
import javax.xml.xpath.XPathExpressionException;
import javax.xml.xpath.XPathFactory;

import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.xml.sax.InputSource;

public class Evaluation {
    public static String extractString(String xmlStr, String xpath)
            throws XPathExpressionException {
        XPathFactory factory = XPathFactory.newInstance();
        XPath xp = factory.newXPath();
        XPathExpression xpe = xp.compile(xpath);
        InputSource is = new InputSource(new StringReader(xmlStr));
        String result = xpe.evaluate(is);
        return result;
    }

    public static NodeList extractNodeList(String xmlStr, String xpath)
            throws XPathExpressionException {
        XPathFactory factory = XPathFactory.newInstance();
        XPath xp = factory.newXPath();
        XPathExpression xpe = xp.compile(xpath);
        InputSource is = new InputSource(new StringReader(xmlStr));
        NodeList result = (NodeList) xpe.evaluate(is, XPathConstants.NODESET);
        return result;
    }

    public static String extractString(Node node, String xpath)
            throws XPathExpressionException {
        XPathFactory factory = XPathFactory.newInstance();
        XPath xp = factory.newXPath();
        XPathExpression xpe = xp.compile(xpath);
        return xpe.evaluate(node);
    }
}

一个困扰了很久的XML类冲突问题的解决

有一个使用XML技术的项目,其中使用到了ASF的xerces软件包,在J2SE模式下,该程序运行正常,但是当将项目中的类导入了J2EE项目中,部署到Tomcat后无法将JSP页面转换为servlet,出现以下的错误

HTTP Status 500 -


type Exception report

message

description The server encountered an internal error () that prevented it from fulfilling this request.

exception

javax.servlet.ServletException: (class: org/apache/xerces/jaxp/DocumentBuilderImpl, method: parse signature: (Lorg/xml/sax/InputSource;)Lorg/w3c/dom/Document;) Incompatible object argument for function call
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:272)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)


root cause



java.lang.VerifyError: (class: org/apache/xerces/jaxp/DocumentBuilderImpl, method: parse signature: (Lorg/xml/sax/InputSource;)Lorg/w3c/dom/Document;) Incompatible object argument for function call
org.apache.xerces.jaxp.DocumentBuilderFactoryImpl.newDocumentBuilder(Unknown Source)
org.apache.jasper.xmlparser.ParserUtils.parseXMLDocument(ParserUtils.java:92)
org.apache.jasper.compiler.JspConfig.processWebDotXml(JspConfig.java:76)
org.apache.jasper.compiler.JspConfig.init(JspConfig.java:197)
org.apache.jasper.compiler.JspConfig.findJspProperty(JspConfig.java:249)
org.apache.jasper.compiler.Compiler.generateJava(Compiler.java:112)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:295)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:276)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:264)
org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:563)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:303)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)


note The full stack trace of the root cause is available in the Apache Tomcat/5.5.17 logs.




初步判断是因为类的版本有冲突引起的问题。这个问题困扰了很久也没有解决,后来下载了新的xerces软件包替换了原来的版本,居然问题就解决了。



注意:在更换xerces软件包之后要clean以下项目,否则还会出现这个错误

2009年2月16日星期一

改变Microsoft SQL Server 数据库中表的所有者

exec   sp_msforeachtable   'sp_changeobjectowner   "?","dbo"'

2009年2月15日星期日

Kingston DataTraveler 贺岁版4G量产

量产前通过芯片精灵得知芯片型号: UP12~UP14

找到了群联v1.78的量产工具 ,在量产工具里设置好VID =0DD8 PID = 1000,并选中Preformat(预格式化),进行第一次量产,量产失败。
重新拔插U盘,提示找到新硬件"USB DISK 30X"。

[PenDriveMP]
IC Type=PS2233
Used MPTool=Last Version
[Parameter Mark]
Parameter Type=F1_MP_21
[Customize Info]
USB VID=0x0dd8
USB PID=0x1000
String Product Name=DISK CD
String Manufacturer Name=USB
Inquiry Version=PMAP
[Configuration]
Reset Serial Number=0
CDROM Size=2048
[TestItemOption]
Do Preformat Test=1
[Extra]
Mode=21
[Misc]
Privacy Volume Label=USB DISK CD
CDROM Image=F:\winxp_20090201.iso
[Advance]
Tick=1
FC1=0xff
FC2=0x01
[Firmware]
ISP=0

用芯片精灵检测。芯片型号变成了PS2134。 使用ps2233 v1.03进行第二次量产,等待了很长时间(因为要写入的光盘镜像比较大!)。

量产后,VID = 0DD8 PID = 1000,芯片型号: PS2232/PS2233

写入的可启动光盘应该能满足平时维护机器的需要了。还剩下2G空间作为U盘使用。 :p

说明如下:

一、系统简介:
1、原生NTFS,我的文档、收藏夹、桌面默认在D盘
2、支持64位和多核CPU,支持SATA、RAID、SCSI设备
3、彻底禁止自动运行(防 Autorun 病毒的蔓延)
4、部署中自动清除Autorun病毒残余
5、Ghost版集成Office 2003 SP3三大件
6、集成至200901的安全补丁,免序列号,免激活
7、光盘内置tools包含基本常用工具

二、刻录说明:
首先用Hash V1.04校验ISO文件的MD5值,在确认MD5正确后,运行UltraISO最新版——工具——刻录光盘映像——写入速度:16X——写入方式:光盘一次写入——映像文件:*.iso——刻录。

三、安装说明:
首先在BIOS中设置光驱优先启动,然后放入光盘并重启机子。当出现光盘引导菜单后,会有多种选择,任选其一即可。

四、光盘启动菜单:
(A)安装win xp sp3  采用WinXP SP3 MSDN官方原版制作,集成部分SRS驱动
(B)安装Ghost XP SP3 采用WinXP SP3 MSDN官方原版制作
[1]DOS工具箱
[2]Ghost克隆
[3]Paragon分区
[4]acronis分区
[5]PE光盘版
[6]NTFS启动盘
[7]清除系统密码

2009年2月5日星期四

手工制作铅笔套

笔套

找一张软硬适中的薄硬纸板,按照上图进行裁剪(单位为毫米),裁去阴影部分。将长边卷到铅笔上,卷紧,接头处用手艺白胶或者其他东西固定。将阴影部分之间的窄条折过来,用白胶粘到卷好的笔套上。完毕。

使用彩虹表的NTLM、MD5破解工具 rcracki

基本用法:

rcracki_mt -t 4 -l e:\hash.txt e:\rainbow\ntlm\*