??xml version="1.0" encoding="utf-8" standalone="yes"?>亚洲激情视频网站,婷婷综合缴情亚洲狠狠尤物,亚洲国模精品一区http://www.tkk7.com/java-god/category/29689.htmlzh-cnThu, 08 May 2008 05:25:58 GMTThu, 08 May 2008 05:25:58 GMT60xslt 获取 xml 数据的格?/title><link>http://www.tkk7.com/java-god/archive/2008/05/07/198886.html</link><dc:creator>java flex l合</dc:creator><author>java flex l合</author><pubDate>Wed, 07 May 2008 02:41:00 GMT</pubDate><guid>http://www.tkk7.com/java-god/archive/2008/05/07/198886.html</guid><wfw:comment>http://www.tkk7.com/java-god/comments/198886.html</wfw:comment><comments>http://www.tkk7.com/java-god/archive/2008/05/07/198886.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.tkk7.com/java-god/comments/commentRss/198886.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/java-god/services/trackbacks/198886.html</trackback:ping><description><![CDATA[xml文g的格?br /> <?xml version="1.0" encoding="UTF-8"?><br /> <DataSets><br />     <Metadata><br />         <ItemDef OID="I0001" Name="姓名" DataType="string" Length=""<br />             SignificantDigits="" SASFieldName="" SDSVarName="" Origin=""<br />             Comment="" DefaultValue="" Note="输入您的名字"<br />             RangeCheckRelationship="and"><br />             <CodeListRef Name="" /><br />             <Question>您的姓名?</Question><br />             <Control qualityControl="" operationType="" /><br />         </ItemDef><br />         <ItemDef OID="I0002" Name="说明信息" DataType="text" Length=""<br />             SignificantDigits="" SASFieldName="" SDSVarName="" Origin=""<br />             Comment="" DefaultValue="7g" Note="" RangeCheckRelationship="and"><br />             <CodeListRef Name="" /><br />             <Question>您的详细说明</Question><br />             <Control qualityControl="" operationType="" /><br />         </ItemDef><br />         <ItemGroupDef OID="G0001" Name="个h描述" Repeating="yes"<br />             IsReferenceData="0" SASDatasetName="" Domain="" Origin="" Purpose=""<br />             Comment=""<br />             Note="个h描述信息,包括:[r]&amp;lt;br/&amp;gt;[/r]1, 姓名[r]&amp;lt;br/&amp;gt;[/r]2, 详细描述信息"><br />             <ItemRef ItemOID="I0001" Name="姓名" OrderNumber="1"<br />                 Mandatory="no" /><br />             <ItemRef ItemOID="I0002" Name="说明信息" OrderNumber="2"<br />                 Mandatory="no" /><br />         </ItemGroupDef><br />         <FormDef OID="F0001" Name="预诊-1" Repeating="yes"<br />             Note="预诊信息[r]&amp;lt;br/&amp;gt;[/r]误l输?><br />             <ItemGroupRef ItemGroupOID="G0001" Name="个h描述"<br />                 OrderNumber="1" Mandatory="no" /><br />         </FormDef><br />         <StudyEventDef OID="E0001" Name="新徏诊断-1" Repeating="yes"<br />             Type="Scheduled" Category=""><br />             <FormRef FormOID="F0001" Name="预诊-1" OrderNumber="1"<br />                 Mandatory="no" page="1" /><br />         </StudyEventDef><br />         <VarDef OID="var_0" DataType="string" Lable="您的姓名?"<br />             Remark="E0001.1//F0001.1//G0001#1.I0001" Domain="" Function=""><br />             <ItemRef Varname="v0" ItemOID="I0001" Eventpath="E0001.1"<br />                 Formpath="F0001.1" ItemGrouppath="G0001#1" /><br />         </VarDef><br />         <VarDef OID="var_1" DataType="text" Lable="您的详细说明"<br />             Remark="E0001.1//F0001.1//G0001#1.I0002" Domain="" Function=""><br />             <ItemRef Varname="v0" ItemOID="I0002" Eventpath="E0001.1"<br />                 Formpath="F0001.1" ItemGrouppath="G0001#1" /><br />         </VarDef><br />     </Metadata><br />     <DataSet Subject="0010"><br />         <Event Name="abc"><br />             <Data Value="1" VarRefOID="var_0" /><br />             <Data Value="2" VarRefOID="var_1" /><br />         </Event><br />     </DataSet><br />     <DataSet Subject="0009"><br />         <Event Name="abc"><br />             <Data Value="1" VarRefOID="var_0" /><br />             <Data Value="1" VarRefOID="var_1" /><br />         </Event><br />     </DataSet><br />     <DataSet Subject="0008"><br />         <Event Name="abc"><br />             <Data Value="1" VarRefOID="var_0" /><br />             <Data Value="1" VarRefOID="var_1" /><br />         </Event><br />     </DataSet><br />     <DataSet Subject="0007"><br />         <Event Name="abc"><br />             <Data Value="1" VarRefOID="var_0" /><br />             <Data Value="1" VarRefOID="var_1" /><br />         </Event><br />     </DataSet><br />     <DataSet Subject="0006"><br />         <Event Name="abc"><br />             <Data Value="1" VarRefOID="var_0" /><br />             <Data Value="2" VarRefOID="var_1" /><br />         </Event><br />     </DataSet><br />     <DataSet Subject="0005"><br />         <Event Name="abc"><br />             <Data Value="1" VarRefOID="var_0" /><br />             <Data Value="2" VarRefOID="var_1" /><br />         </Event><br />     </DataSet><br />     <DataSet Subject="0004"><br />         <Event Name="abc"><br />             <Data Value="1" VarRefOID="var_0" /><br />             <Data Value="2" VarRefOID="var_1" /><br />         </Event><br />     </DataSet><br />     <DataSet Subject="0003"><br />         <Event Name="abc"><br />             <Data Value="niahoa" VarRefOID="var_0" /><br />             <Data Value="gee " VarRefOID="var_1" /><br />         </Event><br />     </DataSet><br />     <DataSet Subject="0002"><br />         <Event Name="abc"><br />             <Data Value="12" VarRefOID="var_0" /><br />             <Data Value="3" VarRefOID="var_1" /><br />         </Event><br />     </DataSet><br />     <DataSet Subject="0001"><br />         <Event Name="abc"><br />             <Data Value="qqq" VarRefOID="var_0" /><br />             <Data Value="gg" VarRefOID="var_1" /><br />         </Event><br />     </DataSet><br /> </DataSets><br /> xslt文g的格?br /> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"><br /> <xsl:output method="text" version="1.0" encoding="UTF-8" indent="yes"/><br /> <xsl:strip-space elements="*"/><br /> <br /> <xsl:template match="/"><br />         <xsl:variable name="columnitems" select="http://VarDef"/><br />         <xsl:variable name="rowitems" select="http://DataSet"/><br />         <br />         <xsl:call-template name="listcolumns"><br />         <xsl:with-param name="items" select="$columnitems"/><br />         </xsl:call-template><br /> <br />         <xsl:call-template name="listrows"><br />         <xsl:with-param name="citems" select="$columnitems"/><br />         <xsl:with-param name="ritems" select="$rowitems"/><br />         </xsl:call-template><br /> </xsl:template><br /> <br /> <xsl:template name="listcolumns"><br />     <xsl:param name="items"/><br />     <xsl:text>SubjectCode,</xsl:text><br />     <xsl:for-each select="$items"><br />           <xsl:choose><br />               <xsl:when test="position() != last() and last() >= 2"><br />                    <xsl:value-of select="@OID"/>,<xsl:text/><br />               </xsl:when><br />               <xsl:otherwise><br />                    <xsl:value-of select="@OID"/><xsl:text/><br />               </xsl:otherwise><br />             </xsl:choose><br />     </xsl:for-each><br />     <xsl:text> </xsl:text><br />     <xsl:text>,</xsl:text><br />     <xsl:for-each select="$items"><br />           <xsl:choose><br />               <xsl:when test="position() != last() and last() >= 2"><br />                    <xsl:value-of select="@Label"/>,<xsl:text/><br />               </xsl:when><br />               <xsl:otherwise><br />                    <xsl:value-of select="@Label"/><xsl:text/><br />               </xsl:otherwise><br />             </xsl:choose><br />     </xsl:for-each><br />     <xsl:text> </xsl:text><br /> </xsl:template><br /> <br /> <xsl:template name="listrows"><br />     <xsl:param name="citems"/><br />     <xsl:param name="ritems"/><br />     <xsl:for-each select="$ritems"><br />             <xsl:text>"</xsl:text><br />             <xsl:value-of select="@Subject"/><xsl:text/><br />             <xsl:text>",</xsl:text><br />             <xsl:variable name="item" select="Event"/><br />             <xsl:call-template name="listrow"><br />             <xsl:with-param name="dataitem" select="$item"/><br />             <xsl:with-param name="matchcitems" select="$citems"/><br />             </xsl:call-template><br />     </xsl:for-each><br /> </xsl:template><br /> <br /> <xsl:template name="listrow"><br />     <xsl:param name="dataitem"/><br />     <xsl:param name="matchcitems"/><br />     <xsl:for-each select="$matchcitems"><br />             <xsl:variable name="have"><br />                     <xsl:variable name="cellname" select="@OID"/><br />                     <xsl:call-template name="printcell"><br />                     <xsl:with-param name="cn" select="$cellname"/><br />                     <xsl:with-param name="celldatas" select="$dataitem"/><br />                     </xsl:call-template><br />             </xsl:variable><br />           <xsl:choose><br />               <xsl:when test="position() != last() and last() >= 2"><br />                    <xsl:value-of select="$have"/>,<xsl:text/><br />               </xsl:when><br />               <xsl:otherwise><br />                    <xsl:value-of select="$have"/><xsl:text/><br />               </xsl:otherwise><br />             </xsl:choose><br />     </xsl:for-each><br />     <xsl:text> </xsl:text><br /> </xsl:template><br /> <br /> <xsl:template name="printcell"><br />     <xsl:param name="cn"/><br />     <xsl:param name="celldatas"/><br />         <xsl:for-each select="$celldatas/Data"><br />             <xsl:if test="$cn = @VarRefOID"><br />                 <xsl:text>"</xsl:text><br />                 <xsl:value-of select="@Value"/><xsl:text/><br />                 <xsl:text>"</xsl:text><br />             </xsl:if><br />         </xsl:for-each><br /> </xsl:template><br /> <br /> </xsl:stylesheet><br /> <br /> <img src ="http://www.tkk7.com/java-god/aggbug/198886.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/java-god/" target="_blank">java flex l合</a> 2008-05-07 10:41 <a href="http://www.tkk7.com/java-god/archive/2008/05/07/198886.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>采用org.w3c.domq行XML操作Q包括查找、新增、删除、修改结?/title><link>http://www.tkk7.com/java-god/archive/2008/02/24/181766.html</link><dc:creator>java flex l合</dc:creator><author>java flex l合</author><pubDate>Sun, 24 Feb 2008 06:30:00 GMT</pubDate><guid>http://www.tkk7.com/java-god/archive/2008/02/24/181766.html</guid><wfw:comment>http://www.tkk7.com/java-god/comments/181766.html</wfw:comment><comments>http://www.tkk7.com/java-god/archive/2008/02/24/181766.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.tkk7.com/java-god/comments/commentRss/181766.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/java-god/services/trackbacks/181766.html</trackback:ping><description><![CDATA[<span> <p>/**<br /> * cdXmlOperate<p><br /> * ~写?Qjava_god<p><br /> **/</p> <p>public class XmlOperate<br /> {<br /> <br />     <br />     /**<br />     * Ҏ名称QgetNodeList<p><br />     * Ҏ功能Q获取父l点parent的所有子l点<p><br />     * 参数说明Q@param parent<br />     * 参数说明Q@return <p><br />     * q回QNodeList <p><br />     * 作者:luoc<br />     * 日期Q?005-6-22<br />     **/<br />     public static NodeList getNodeList(Element parent)<br />     {<br />         return parent.getChildNodes();<br />     }<br />     <br />     /**<br />     * Ҏ名称QgetElementsByName<p><br />     * Ҏ功能Q在父结点中查询指定名称的结炚w            <p><br />     * 参数说明Q@param parent<br />     * 参数说明Q@param name<br />     * 参数说明Q@return <p><br />     * q回QElement[] <p><br />     * 作者:luoc<br />     * 日期Q?005-6-22<br />     **/<br />     public static Element [] getElementsByName(Element parent,String name)<br />     {<br />         ArrayList resList=new ArrayList();<br />         NodeList nl=getNodeList(parent);<br />         for(int i=0;i<nl.getLength();i++)<br />         {<br />             Node nd=nl.item(i);<br />             if(nd.getNodeName().equals(name))<br />             {<br />                 resList.add(nd);<br />             }<br />         }<br />         Element [] res=new Element [resList.size()];<br />         for(int i=0;i<resList.size();i++)<br />         {<br />             res[0]=(Element)resList.get(i);<br />         }        <br />         logger.debug(parent.getNodeName()+"'s children of "+name+<br />                 "'s num:"+res.length);<br />         return res;<br />     }<br />     <br />     /**<br />     * Ҏ名称QgetElementName<p><br />     * Ҏ功能Q获取指定Element的名U?nbsp;           <p><br />     * 参数说明Q@param element<br />     * 参数说明Q@return <p><br />     * q回QString <p><br />     * 作者:luoc<br />     * 日期Q?005-6-22<br />     **/<br />     public static String getElementName(Element element)<br />     {<br />         return element.getNodeName();<br />     }<br />     <br />     /**<br />     * Ҏ名称QgetElementValue<p><br />     * Ҏ功能Q获取指定Element的?lt;p><br />     * 参数说明Q@param element<br />     * 参数说明Q@return <p><br />     * q回QString <p><br />     * 作者:luoc<br />     * 日期Q?005-6-22<br />     **/<br />     public static String getElementValue(Element element)<br />     {<br />         NodeList nl=element.getChildNodes();<br />         for(int i=0;i<nl.getLength();i++)<br />         {<br />             if(nl.item(i).getNodeType()==Node.TEXT_NODE)//是一个Text Node<br />             {            <br />                 logger.debug(element.getNodeName()+" has a Text Node.");<br />                 return element.getFirstChild().getNodeValue();<br />             }<br />         }   <br />         logger.error(element.getNodeName()+" hasn't a Text Node.");<br />         return null;<br />     }<br />     <br />     /**<br />     * Ҏ名称QgetElementAttr<p><br />     * Ҏ功能Q获取指定Element的属性attr的?nbsp;           <p><br />     * 参数说明Q@param element<br />     * 参数说明Q@param attr<br />     * 参数说明Q@return <p><br />     * q回QString <p><br />     * 作者:luoc<br />     * 日期Q?005-6-22<br />     **/<br />     public static String getElementAttr(Element element,String attr)<br />     {<br />         return element.getAttribute(attr);<br />     }<br />     <br />     /**<br />     * Ҏ名称QsetElementValue<p><br />     * Ҏ功能Q设|指定Element的?nbsp;           <p><br />     * 参数说明Q@param element<br />     * 参数说明Q@param val <p><br />     * q回Qvoid <p><br />     * 作者:luoc<br />     * 日期Q?005-6-22<br />     **/<br />     public static void setElementValue(Element element,String val)<br />     {<br />         Node node=element.getOwnerDocument().createTextNode(val);<br />         NodeList nl=element.getChildNodes();<br />         for(int i=0;i<nl.getLength();i++)<br />         {<br />             Node nd=nl.item(i);<br />             if(nd.getNodeType()==Node.TEXT_NODE)//是一个Text Node<br />             {            <br />                   nd.setNodeValue(val);<br />                   logger.debug("modify "+element.getNodeName()+"'s node value succe.");<br />                   return;<br />             }<br />         }   <br />         logger.debug("new "+element.getNodeName()+"'s node value succe.");<br />         element.appendChild(node);        <br />     }<br />     <br />     /**<br />     * Ҏ名称QsetElementAttr<p><br />     * Ҏ功能Q设|结点Element的属?lt;p><br />     * 参数说明Q@param element<br />     * 参数说明Q@param attr<br />     * 参数说明Q@param attrVal <p><br />     * q回Qvoid <p><br />     * 作者:luoc<br />     * 日期Q?005-6-22<br />     **/<br />     public static void setElementAttr(Element element,<br />             String attr,String attrVal)<br />     {<br />         element.setAttribute(attr,attrVal);<br />     }<br />     <br />     <br />     /**<br />     * Ҏ名称QaddElement<p><br />     * Ҏ功能Q在parent下增加结点child<p><br />     * 参数说明Q@param parent<br />     * 参数说明Q@param child <p><br />     * q回Qvoid <p><br />     * 作者:luoc<br />     * 日期Q?005-6-22<br />     **/<br />     public static void addElement(Element parent,Element child)<br />     {<br />         parent.appendChild(child);<br />     }<br />     <br />     /**<br />     * Ҏ名称QaddElement<p><br />     * Ҏ功能Q在parent下增加字W串tagName生成的结?lt;p><br />     * 参数说明Q@param parent<br />     * 参数说明Q@param tagName <p><br />     * q回Qvoid <p><br />     * 作者:luoc<br />     * 日期Q?005-6-22<br />     **/<br />     public static void addElement(Element parent,String tagName)<br />     {        <br />         Document doc=parent.getOwnerDocument();<br />         Element child=doc.createElement(tagName);<br />         parent.appendChild(child);<br />     }<br />     <br />     /**<br />     * Ҏ名称QaddElement<p><br />     * Ҏ功能Q在parent下增加tagName的Textl点Q且gؓtext<p><br />     * 参数说明Q@param parent<br />     * 参数说明Q@param tagName<br />     * 参数说明Q@param text <p><br />     * q回Qvoid <p><br />     * 作者:luoc<br />     * 日期Q?005-6-22<br />     **/<br />     public static void addElement(Element parent,String tagName,String text)<br />     {<br />         Document doc=parent.getOwnerDocument();<br />         Element child=doc.createElement(tagName);<br />         setElementValue(child,text);<br />         parent.appendChild(child);<br />     }<br />     <br />     /**<br />     * Ҏ名称QremoveElement<p><br />     * Ҏ功能Q将父结点parent下的名称为tagName的结点移?lt;p><br />     * 参数说明Q@param parent<br />     * 参数说明Q@param tagName <p><br />     * q回Qvoid <p><br />     * 作者:luoc<br />     * 日期Q?005-6-22<br />     **/<br />     public static void removeElement(Element parent,String tagName)<br />     {<br />         logger.debug("remove "+parent.getNodeName()+"'s children by tagName "+tagName+" begin...");<br />         NodeList nl=parent.getChildNodes();<br />         for(int i=0;i<nl.getLength();i++)<br />         {<br />             Node nd=nl.item(i);<br />             if(nd.getNodeName().equals(tagName))<br />             {<br />                 parent.removeChild(nd);<br />                 logger.debug("remove child '"+nd+"' success.");<br />             }<br />         }<br />         logger.debug("remove "+parent.getNodeName()+"'s children by tagName "+tagName+" end.");<br />     }<br />     <br />     <br />     /*全局变量*/    <br />     static Logger logger=Logger.getLogger("XmlOper");<br /> }</p> </span> <img src ="http://www.tkk7.com/java-god/aggbug/181766.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/java-god/" target="_blank">java flex l合</a> 2008-02-24 14:30 <a href="http://www.tkk7.com/java-god/archive/2008/02/24/181766.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Java SE 6中XML数字{֐的实?/title><link>http://www.tkk7.com/java-god/archive/2008/02/24/181759.html</link><dc:creator>java flex l合</dc:creator><author>java flex l合</author><pubDate>Sun, 24 Feb 2008 06:05:00 GMT</pubDate><guid>http://www.tkk7.com/java-god/archive/2008/02/24/181759.html</guid><wfw:comment>http://www.tkk7.com/java-god/comments/181759.html</wfw:comment><comments>http://www.tkk7.com/java-god/archive/2008/02/24/181759.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.tkk7.com/java-god/comments/commentRss/181759.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/java-god/services/trackbacks/181759.html</trackback:ping><description><![CDATA[ackage test.xml.signature;<br /> <br /> import java.io.File;<br /> import java.io.FileInputStream;<br /> import java.io.FileOutputStream;<br /> import java.io.IOException;<br /> import java.io.ObjectOutputStream;<br /> import java.security.Key;<br /> import java.security.KeyFactory;<br /> import java.security.KeyPair;<br /> import java.security.KeyPairGenerator;<br /> import java.security.PrivateKey;<br /> import java.security.PublicKey;<br /> import java.security.spec.EncodedKeySpec;<br /> import java.security.spec.PKCS8EncodedKeySpec;<br /> import java.security.spec.X509EncodedKeySpec;<br /> import java.util.Collections;<br /> import java.util.List;<br /> <br /> import javax.xml.crypto.dom.DOMStructure;<br /> import javax.xml.crypto.dsig.CanonicalizationMethod;<br /> import javax.xml.crypto.dsig.DigestMethod;<br /> import javax.xml.crypto.dsig.Reference;<br /> import javax.xml.crypto.dsig.SignatureMethod;<br /> import javax.xml.crypto.dsig.SignedInfo;<br /> import javax.xml.crypto.dsig.Transform;<br /> import javax.xml.crypto.dsig.XMLSignature;<br /> import javax.xml.crypto.dsig.XMLSignatureFactory;<br /> import javax.xml.crypto.dsig.dom.DOMSignContext;<br /> import javax.xml.crypto.dsig.dom.DOMValidateContext;<br /> import javax.xml.crypto.dsig.keyinfo.KeyInfo;<br /> import javax.xml.crypto.dsig.keyinfo.KeyInfoFactory;<br /> import javax.xml.crypto.dsig.keyinfo.KeyValue;<br /> import javax.xml.crypto.dsig.spec.C14NMethodParameterSpec;<br /> import javax.xml.crypto.dsig.spec.TransformParameterSpec;<br /> import javax.xml.parsers.DocumentBuilderFactory;<br /> import javax.xml.transform.Transformer;<br /> import javax.xml.transform.TransformerFactory;<br /> import javax.xml.transform.dom.DOMSource;<br /> import javax.xml.transform.stream.StreamResult;<br /> <br /> import org.w3c.dom.Document;<br /> import org.w3c.dom.Node;<br /> import org.w3c.dom.NodeList;<br /> <br /> public class SignatureXML {<br />    <br />    public void saveKey(PublicKey publicKey, PrivateKey privateKey) throws Exception{<br />        X509EncodedKeySpec ksp = new X509EncodedKeySpec(publicKey.getEncoded());<br />        FileOutputStream fos = new FileOutputStream("C:\\public.key");<br />        fos.write(ksp.getEncoded());<br />        fos.close();<br /> <br />        PKCS8EncodedKeySpec pks = new PKCS8EncodedKeySpec(privateKey.getEncoded());<br />        fos = new FileOutputStream("C:\\private.key");<br />        fos.write(pks.getEncoded());<br />        fos.close();<br /> }<br />    <br /> public Key LoadKeyFromFile(boolean ispk, String keyFile) {<br />        Key key = null;<br />        FileInputStream is = null;<br />        try {<br />            is = new FileInputStream(keyFile);<br />            byte[] buf = new byte[is.available()];<br />            KeyFactory keyFactory = KeyFactory.getInstance("DSA");<br />            is.read(buf);<br />            EncodedKeySpec keySpec;<br />            if (ispk) {<br />                keySpec = new PKCS8EncodedKeySpec(buf);<br />            } else {<br />                keySpec = new X509EncodedKeySpec(buf);<br />            }<br />            key = (!ispk ? (Key) keyFactory.generatePublic(keySpec) : (Key) keyFactory.generatePrivate(keySpec));<br />        } catch (Exception e) {<br />            e.printStackTrace();<br />        } finally {<br />            try {<br />                is.close();<br />            } catch (IOException iex) {<br />                iex.printStackTrace();<br />            }<br />        }<br />        return key;<br />    }<br />    <br />    public void SignatureXMLDocument(String docPath) throws Exception {<br />        DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();<br />        dbf.setNamespaceAware(true);<br />        Document doc = dbf.newDocumentBuilder().parse(new FileInputStream(docPath));<br />        this.SignatureXMLDocument(doc);<br />    }<br /> <br />    public void SignatureXMLDocument(Document doc) throws Exception {<br />        <br />        XMLSignatureFactory fac = XMLSignatureFactory.getInstance();<br />        /*创徏 <Reference> 元素Q引用整?XML 文Q?br />        *创徏 Reference 的时候将 URI 参数指定?"" 表示Ҏ?XML 文档q行引用Q?br />        *摘要法指定?SHA1Q这里将转换方式指定?ENVELOPED Q?br />        *q样在对整个文档q行引用q生成摘要值的时候,<Signature> 元素不会被计在内?/<br />        Transform envelopedTransform = fac.newTransform(Transform.ENVELOPED,(TransformParameterSpec) null);<br />        DigestMethod sha1DigMethod = fac.newDigestMethod(DigestMethod.SHA1,   null);<br />        Reference refToRootDoc = fac.newReference("", sha1DigMethod,Collections.singletonList(envelopedTransform), null, null);<br />        <br />        /*创徏 <SignedInfo> 元素<br />          *因ؓ最l的数字{֐是针?<SignedInfo> 元素而生成的Q所以需要指定该 XML 元素的规范化ҎQ?br />          * 以确定最l被处理的数据。这里指定ؓ INCLUSIVE_WITH_COMMENTS , <br />          * 表示在规范化 XML 内容的时候会?XML 注释也包含在内?br />          *    xQ待{֐的内容(<SignedInfo> 元素Q已指定好,再只需要签名所使用的密钥就可以创徏数字{֐了?/<br />        CanonicalizationMethod c14nWithCommentMethod = <br />            fac.newCanonicalizationMethod(CanonicalizationMethod.INCLUSIVE_WITH_COMMENTS,(C14NMethodParameterSpec) null);<br />        SignatureMethod dsa_sha1SigMethod = fac.newSignatureMethod(SignatureMethod.DSA_SHA1, null);<br />        SignedInfo signedInfo = fac.newSignedInfo(c14nWithCommentMethod,dsa_sha1SigMethod,Collections.singletonList(refToRootDoc));<br />        <br />         /*XML 数字{֐规范规定了多U在 <KeyInfo> 中指定验证密钥的方式Q比?<KeyName>Q?lt;KeyValue>Q?lt;X509Data>Q?lt;PGPData> {等?br />           * q里使用 XML 数字{֐规范规定必须实现?<DSAKeyValue> 来指定验证签名所需的公共密钥?br />           * 在程序中使用 java.security 包生?DSA 密钥寏V?/<br />         //创徏密钥?br />        KeyPairGenerator kpGen = KeyPairGenerator.getInstance("DSA");<br />        kpGen.initialize(512);<br />        KeyPair keyPair = kpGen.generateKeyPair();<br />        <br />        PublicKey publicKey   = keyPair.getPublic();<br />        PrivateKey privateKey = keyPair.getPrivate();<br />        <br />        this.saveKey(publicKey, privateKey);<br />        <br />        //以公钥ؓ参数创徏 <KeyValue> 元素<br />        KeyInfoFactory keyInfoFac = fac.getKeyInfoFactory();<br />        KeyValue keyValue = keyInfoFac.newKeyValue(publicKey);<br />        //Ҏ创徏好的 <KeyValue> 元素创徏 <KeyInfo> 元素Q?br />        KeyInfo keyInfo = keyInfoFac.newKeyInfo(Collections.singletonList(keyValue));<br />        /*q里创徏的密钥对Q其中的公钥已经用于创徏 <KeyInfo> 元素q存攑֜其中Q供{֐验证使用Q而其中的U钥则会在下一步被用于生成{֐?/<br />        <br />        //创徏 <Signature> 元素<br />        /*前面已经创徏?<SignedInfo> ?<KeyInfo> 元素Qؓ了生成最l的数字{֐Q?br />        * 需要根据这两个元素先创?<Signature> 元素Q然后进行签名,<br />        * 创徏?<SignatureValue> 元素?/<br />        XMLSignature signature = fac.newXMLSignature(signedInfo, keyInfo);<br />        <br />        /*XMLSignature cM?sign Ҏ用于Ҏ进行签名,在调?sign Ҏ之前Q?br />        * q需要创?DOMSignContext 对象QؓҎ调用提供上下文信息,<br />        * 包括{֐所使用的私钥和最后生成的 <Signature> 元素所在的目标父元素:*/<br />        <br />        DOMSignContext dsc =    new DOMSignContext(privateKey, doc.getDocumentElement());   <br />        <br />        //生成{֐<br />        /*sign Ҏ会生成签名|q作为元素值创?<SignatureValue> 元素Q然后将整个 <Signature> 元素加入为待{֐文根元素的直接子元素?/<br />        signature.sign(dsc);   <br />        <br />        TransformerFactory tf = TransformerFactory.newInstance();<br />        Transformer transformer = tf.newTransformer();<br />        DOMSource source=new DOMSource(doc);<br />        transformer.transform(source, new StreamResult(System.out));   <br />        StreamResult result = new StreamResult(new File("C:\\old.xml"));<br />        transformer.transform(source,result);<br /> <br />    }<br />    <br />    private void validate(String signedFile) throws Exception {<br />         //Parse the signed XML document to unmarshal <Signature> object.<br />        DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();<br />        dbf.setNamespaceAware(true);<br />        Document doc = dbf.newDocumentBuilder().parse(new FileInputStream(signedFile));<br />        this.validate(doc);<br />    }<br /> <br />    private void validate(Document doc) throws Exception {<br /> <br />        // Search the Signature element<br />        NodeList nl = doc.getElementsByTagNameNS(XMLSignature.XMLNS,"Signature");<br />        if (nl.getLength() == 0) {<br />            throw new Exception("Cannot find Signature element");<br />        }<br />        <br />        Node signatureNode = nl.item(0);<br /> <br />        XMLSignatureFactory fac = XMLSignatureFactory.getInstance("DOM");<br />        XMLSignature signature = fac.unmarshalXMLSignature(new DOMStructure(signatureNode));<br /> <br />        // Get the public key for signature validation<br />        KeyValue keyValue = (KeyValue) signature.getKeyInfo().getContent().get(0);<br />        PublicKey pubKey = keyValue.getPublicKey();<br /> <br />        // Create ValidateContext<br />        DOMValidateContext valCtx = new DOMValidateContext(pubKey,signatureNode);<br /> <br />        // Validate the XMLSignature<br />        boolean coreValidity = signature.validate(valCtx);<br /> <br />        // Check core validation status<br />        if (coreValidity == false) {<br />            System.err.println("Core validation failed");<br />            // Check the signature validation status<br />            boolean sv = signature.getSignatureValue().validate(valCtx);<br />            System.out.println("Signature validation status: " + sv);<br />            // check the validation status of each Reference<br />            List refs = signature.getSignedInfo().getReferences();<br />            for (int i = 0; i < refs.size(); i++) {<br />                Reference ref = (Reference) refs.get(i);<br />                boolean refValid = ref.validate(valCtx);<br />                System.out.println("Reference[" + i + "] validity status: "   + refValid);<br />            }<br />        } else {<br />            System.out.println("Signature passed core validation");<br />        }<br />    }<br />    <br />    <br />    public static void main(String[] args) {<br />        SignatureXML signatureXML=new SignatureXML();<br />        try {<br /> //           signatureXML.SignatureXMLDocument("C:\\new.xml");<br />            signatureXML.validate("C:\\old.xml");<br />        } catch (Exception e) {<br />            e.printStackTrace();<br />        }<br />    }<br /> <br /> }<br /> <br /> <br /> <img src ="http://www.tkk7.com/java-god/aggbug/181759.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/java-god/" target="_blank">java flex l合</a> 2008-02-24 14:05 <a href="http://www.tkk7.com/java-god/archive/2008/02/24/181759.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss> <footer> <div class="friendship-link"> <p>лǵվܻԴȤ</p> <a href="http://www.tkk7.com/" title="亚洲av成人片在线观看">亚洲av成人片在线观看</a> <div class="friend-links"> </div> </div> </footer> վ֩ģ壺 <a href="http://kk600700.com" target="_blank">Ʒҹѹۿ </a>| <a href="http://k9l4.com" target="_blank">ѿһһƬ</a>| <a href="http://adcacs.com" target="_blank">ٺٺƵվ߹ۿ</a>| <a href="http://bcz123.com" target="_blank">þþƷAV鶹 </a>| <a href="http://yuyang0752.com" target="_blank">ѹۿһ</a>| <a href="http://www-8908.com" target="_blank">һ</a>| <a href="http://05942688.com" target="_blank">ĻѵӰվ</a>| <a href="http://chinashineway.com" target="_blank">ҹƷһ߲ŷ </a>| <a href="http://bwgdbjb.com" target="_blank">18ëƬѹۿ</a>| <a href="http://am33318.com" target="_blank">ۺϾþ123</a>| <a href="http://tmg-beelen.com" target="_blank">߹ۿƵ</a>| <a href="http://ac839.com" target="_blank">һ</a>| <a href="http://www12kvkv.com" target="_blank">ĻѲ</a>| <a href="http://cjfuli.com" target="_blank">һëƬƬƵֻ </a>| <a href="http://977446.com" target="_blank">aѹۿþav</a>| <a href="http://ddhlj.com" target="_blank">޹Ʒ߹ۿ </a>| <a href="http://cswsfz.com" target="_blank">ĻƷ</a>| <a href="http://jinmenonline.com" target="_blank">ҹɫ˽ӰԺվ</a>| <a href="http://masfd.com" target="_blank">պav</a>| <a href="http://zjtuhui.com" target="_blank">99ֻоƷƵѹۿ17</a>| <a href="http://xuanzhicity.com" target="_blank">˾žŴɫ㽶վ</a>| <a href="http://6609929.com" target="_blank">100018Ƶ</a>| <a href="http://4eeyy.com" target="_blank">avһ</a>| <a href="http://wuhhz.com" target="_blank">ҹѸ</a>| <a href="http://xxxxnii.com" target="_blank">˸ŮѲžþþ</a>| <a href="http://ninggelang.com" target="_blank">޹˽ӰԺ</a>| <a href="http://fshomppa.com" target="_blank">ƹƵ߿</a>| <a href="http://doctor5470.com" target="_blank">Ļ</a>| <a href="http://7788mgqb.com" target="_blank">91Ʒһ鶹</a>| <a href="http://txtmp3.com" target="_blank">¾þþþa</a>| <a href="http://fuhui123.com" target="_blank">޴רӰԺ</a>| <a href="http://gxnnzk.com" target="_blank">vƬѲ</a>| <a href="http://777mecom.com" target="_blank">߹ۿѸ</a>| <a href="http://zzzttt669.com" target="_blank"></a>| <a href="http://trio2003.com" target="_blank">һƷ˾þ</a>| <a href="http://daohang123456.com" target="_blank">ëƬһAPP</a>| <a href="http://benjiebf.com" target="_blank">youwu뾫Ʒ</a>| <a href="http://246210.com" target="_blank">ۺϾþϵ</a>| <a href="http://51708695.com" target="_blank">97޳ҹҹ</a>| <a href="http://6t23.com" target="_blank">һa뼺Ӳִѿ51Ʒ </a>| <a href="http://gzweida88.com" target="_blank">avһ</a>| <script> (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })(); </script> </body>