锘??xml version="1.0" encoding="utf-8" standalone="yes"?>91国在线观看,一个人看的www久久,亚洲免费资源在线播放http://www.aygfsteel.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.aygfsteel.com/java-god/archive/2008/05/07/198886.html</link><dc:creator>java flex 緇撳悎</dc:creator><author>java flex 緇撳悎</author><pubDate>Wed, 07 May 2008 02:41:00 GMT</pubDate><guid>http://www.aygfsteel.com/java-god/archive/2008/05/07/198886.html</guid><wfw:comment>http://www.aygfsteel.com/java-god/comments/198886.html</wfw:comment><comments>http://www.aygfsteel.com/java-god/archive/2008/05/07/198886.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/java-god/comments/commentRss/198886.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/java-god/services/trackbacks/198886.html</trackback:ping><description><![CDATA[xml鏂囦歡鐨勬牸寮?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="杈撳叆鎮(zhèn)ㄧ殑鍚嶅瓧"<br />             RangeCheckRelationship="and"><br />             <CodeListRef Name="" /><br />             <Question>鎮(zhèn)ㄧ殑濮撳悕?</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>鎮(zhèn)ㄧ殑璇︾粏璇存槑</Question><br />             <Control qualityControl="" operationType="" /><br />         </ItemDef><br />         <ItemGroupDef OID="G0001" Name="涓漢鎻忚堪" Repeating="yes"<br />             IsReferenceData="0" SASDatasetName="" Domain="" Origin="" Purpose=""<br />             Comment=""<br />             Note="涓漢鎻忚堪淇℃伅,鍖呮嫭:[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]璇瘋緇嗚緭鍏?><br />             <ItemGroupRef ItemGroupOID="G0001" Name="涓漢鎻忚堪"<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="鎮(zhèn)ㄧ殑濮撳悕?"<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="鎮(zhèn)ㄧ殑璇︾粏璇存槑"<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鏂囦歡鐨勬牸寮?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.aygfsteel.com/java-god/aggbug/198886.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/java-god/" target="_blank">java flex 緇撳悎</a> 2008-05-07 10:41 <a href="http://www.aygfsteel.com/java-god/archive/2008/05/07/198886.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>閲囩敤org.w3c.dom榪涜XML鎿嶄綔錛屽寘鎷煡鎵俱佹柊澧炪佸垹闄ゃ佷慨鏀圭粨鐐?/title><link>http://www.aygfsteel.com/java-god/archive/2008/02/24/181766.html</link><dc:creator>java flex 緇撳悎</dc:creator><author>java flex 緇撳悎</author><pubDate>Sun, 24 Feb 2008 06:30:00 GMT</pubDate><guid>http://www.aygfsteel.com/java-god/archive/2008/02/24/181766.html</guid><wfw:comment>http://www.aygfsteel.com/java-god/comments/181766.html</wfw:comment><comments>http://www.aygfsteel.com/java-god/archive/2008/02/24/181766.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/java-god/comments/commentRss/181766.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/java-god/services/trackbacks/181766.html</trackback:ping><description><![CDATA[<span> <p>/**<br /> * 綾誨悕XmlOperate<p><br /> * 緙栧啓鑰?錛歫ava_god<p><br /> **/</p> <p>public class XmlOperate<br /> {<br /> <br />     <br />     /**<br />     * 鏂規(guī)硶鍚嶇О錛歡etNodeList<p><br />     * 鏂規(guī)硶鍔熻兘錛氳幏鍙栫埗緇撶偣parent鐨勬墍鏈夊瓙緇撶偣<p><br />     * 鍙傛暟璇存槑錛欯param parent<br />     * 鍙傛暟璇存槑錛欯return <p><br />     * 榪斿洖錛歂odeList <p><br />     * 浣滆咃細(xì)luoc<br />     * 鏃ユ湡錛?005-6-22<br />     **/<br />     public static NodeList getNodeList(Element parent)<br />     {<br />         return parent.getChildNodes();<br />     }<br />     <br />     /**<br />     * 鏂規(guī)硶鍚嶇О錛歡etElementsByName<p><br />     * 鏂規(guī)硶鍔熻兘錛氬湪鐖剁粨鐐逛腑鏌ヨ鎸囧畾鍚嶇О鐨勭粨鐐歸泦            <p><br />     * 鍙傛暟璇存槑錛欯param parent<br />     * 鍙傛暟璇存槑錛欯param name<br />     * 鍙傛暟璇存槑錛欯return <p><br />     * 榪斿洖錛欵lement[] <p><br />     * 浣滆咃細(xì)luoc<br />     * 鏃ユ湡錛?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 />     * 鏂規(guī)硶鍚嶇О錛歡etElementName<p><br />     * 鏂規(guī)硶鍔熻兘錛氳幏鍙栨寚瀹欵lement鐨勫悕縐?nbsp;           <p><br />     * 鍙傛暟璇存槑錛欯param element<br />     * 鍙傛暟璇存槑錛欯return <p><br />     * 榪斿洖錛歋tring <p><br />     * 浣滆咃細(xì)luoc<br />     * 鏃ユ湡錛?005-6-22<br />     **/<br />     public static String getElementName(Element element)<br />     {<br />         return element.getNodeName();<br />     }<br />     <br />     /**<br />     * 鏂規(guī)硶鍚嶇О錛歡etElementValue<p><br />     * 鏂規(guī)硶鍔熻兘錛氳幏鍙栨寚瀹欵lement鐨勫?lt;p><br />     * 鍙傛暟璇存槑錛欯param element<br />     * 鍙傛暟璇存槑錛欯return <p><br />     * 榪斿洖錛歋tring <p><br />     * 浣滆咃細(xì)luoc<br />     * 鏃ユ湡錛?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)//鏄竴涓猅ext 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 />     * 鏂規(guī)硶鍚嶇О錛歡etElementAttr<p><br />     * 鏂規(guī)硶鍔熻兘錛氳幏鍙栨寚瀹欵lement鐨勫睘鎬ttr鐨勫?nbsp;           <p><br />     * 鍙傛暟璇存槑錛欯param element<br />     * 鍙傛暟璇存槑錛欯param attr<br />     * 鍙傛暟璇存槑錛欯return <p><br />     * 榪斿洖錛歋tring <p><br />     * 浣滆咃細(xì)luoc<br />     * 鏃ユ湡錛?005-6-22<br />     **/<br />     public static String getElementAttr(Element element,String attr)<br />     {<br />         return element.getAttribute(attr);<br />     }<br />     <br />     /**<br />     * 鏂規(guī)硶鍚嶇О錛歴etElementValue<p><br />     * 鏂規(guī)硶鍔熻兘錛氳緗寚瀹欵lement鐨勫?nbsp;           <p><br />     * 鍙傛暟璇存槑錛欯param element<br />     * 鍙傛暟璇存槑錛欯param val <p><br />     * 榪斿洖錛歷oid <p><br />     * 浣滆咃細(xì)luoc<br />     * 鏃ユ湡錛?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)//鏄竴涓猅ext 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 />     * 鏂規(guī)硶鍚嶇О錛歴etElementAttr<p><br />     * 鏂規(guī)硶鍔熻兘錛氳緗粨鐐笶lement鐨勫睘鎬?lt;p><br />     * 鍙傛暟璇存槑錛欯param element<br />     * 鍙傛暟璇存槑錛欯param attr<br />     * 鍙傛暟璇存槑錛欯param attrVal <p><br />     * 榪斿洖錛歷oid <p><br />     * 浣滆咃細(xì)luoc<br />     * 鏃ユ湡錛?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 />     * 鏂規(guī)硶鍚嶇О錛歛ddElement<p><br />     * 鏂規(guī)硶鍔熻兘錛氬湪parent涓嬪鍔犵粨鐐筩hild<p><br />     * 鍙傛暟璇存槑錛欯param parent<br />     * 鍙傛暟璇存槑錛欯param child <p><br />     * 榪斿洖錛歷oid <p><br />     * 浣滆咃細(xì)luoc<br />     * 鏃ユ湡錛?005-6-22<br />     **/<br />     public static void addElement(Element parent,Element child)<br />     {<br />         parent.appendChild(child);<br />     }<br />     <br />     /**<br />     * 鏂規(guī)硶鍚嶇О錛歛ddElement<p><br />     * 鏂規(guī)硶鍔熻兘錛氬湪parent涓嬪鍔犲瓧絎︿覆tagName鐢熸垚鐨勭粨鐐?lt;p><br />     * 鍙傛暟璇存槑錛欯param parent<br />     * 鍙傛暟璇存槑錛欯param tagName <p><br />     * 榪斿洖錛歷oid <p><br />     * 浣滆咃細(xì)luoc<br />     * 鏃ユ湡錛?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 />     * 鏂規(guī)硶鍚嶇О錛歛ddElement<p><br />     * 鏂規(guī)硶鍔熻兘錛氬湪parent涓嬪鍔爐agName鐨凾ext緇撶偣錛屼笖鍊間負(fù)text<p><br />     * 鍙傛暟璇存槑錛欯param parent<br />     * 鍙傛暟璇存槑錛欯param tagName<br />     * 鍙傛暟璇存槑錛欯param text <p><br />     * 榪斿洖錛歷oid <p><br />     * 浣滆咃細(xì)luoc<br />     * 鏃ユ湡錛?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 />     * 鏂規(guī)硶鍚嶇О錛歳emoveElement<p><br />     * 鏂規(guī)硶鍔熻兘錛氬皢鐖剁粨鐐筽arent涓嬬殑鍚嶇О涓簍agName鐨勭粨鐐圭Щ闄?lt;p><br />     * 鍙傛暟璇存槑錛欯param parent<br />     * 鍙傛暟璇存槑錛欯param tagName <p><br />     * 榪斿洖錛歷oid <p><br />     * 浣滆咃細(xì)luoc<br />     * 鏃ユ湡錛?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.aygfsteel.com/java-god/aggbug/181766.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/java-god/" target="_blank">java flex 緇撳悎</a> 2008-02-24 14:30 <a href="http://www.aygfsteel.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涓璛ML鏁板瓧絳懼悕鐨勫疄鐜?/title><link>http://www.aygfsteel.com/java-god/archive/2008/02/24/181759.html</link><dc:creator>java flex 緇撳悎</dc:creator><author>java flex 緇撳悎</author><pubDate>Sun, 24 Feb 2008 06:05:00 GMT</pubDate><guid>http://www.aygfsteel.com/java-god/archive/2008/02/24/181759.html</guid><wfw:comment>http://www.aygfsteel.com/java-god/comments/181759.html</wfw:comment><comments>http://www.aygfsteel.com/java-god/archive/2008/02/24/181759.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/java-god/comments/commentRss/181759.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.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> 鍏冪礌錛屽紩鐢ㄦ暣涓?XML 鏂囨。錛?br />        *鍒涘緩 Reference 鐨勬椂鍊欏皢 URI 鍙傛暟鎸囧畾涓?"" 琛ㄧず瀵規(guī)暣涓?XML 鏂囨。榪涜寮曠敤錛?br />        *鎽樿綆楁硶鎸囧畾涓?SHA1錛涜繖閲屽皢杞崲鏂瑰紡鎸囧畾涓?ENVELOPED 錛?br />        *榪欐牱鍦ㄥ鏁翠釜鏂囨。榪涜寮曠敤騫剁敓鎴愭憳瑕佸肩殑鏃跺欙紝<Signature> 鍏冪礌涓嶄細(xì)琚綆楀湪鍐呫?/<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 />          *鍥犱負(fù)鏈緇堢殑鏁板瓧絳懼悕鏄拡瀵?<SignedInfo> 鍏冪礌鑰岀敓鎴愮殑錛屾墍浠ラ渶瑕佹寚瀹氳 XML 鍏冪礌鐨勮鑼冨寲鏂規(guī)硶錛?br />          * 浠ョ‘瀹氭渶緇堣澶勭悊鐨勬暟鎹傝繖閲屾寚瀹氫負(fù) INCLUSIVE_WITH_COMMENTS , <br />          * 琛ㄧず鍦ㄨ鑼冨寲 XML 鍐呭鐨勬椂鍊欎細(xì)灝?XML 娉ㄩ噴涔熷寘鍚湪鍐呫?br />          *    鑷蟲錛屽緟絳懼悕鐨勫唴瀹癸紙<SignedInfo> 鍏冪礌錛夊凡鎸囧畾濂斤紝鍐嶅彧闇瑕佺鍚嶆墍浣跨敤鐨勫瘑閽ュ氨鍙互鍒涘緩鏁板瓧絳懼悕浜嗐?/<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 鏁板瓧絳懼悕瑙勮寖瑙勫畾浜嗗縐嶅湪 <KeyInfo> 涓寚瀹氶獙璇佸瘑閽ョ殑鏂瑰紡錛屾瘮濡?<KeyName>錛?lt;KeyValue>錛?lt;X509Data>錛?lt;PGPData> 絳夌瓑銆?br />           * 榪欓噷浣跨敤 XML 鏁板瓧絳懼悕瑙勮寖瑙勫畾蹇呴』瀹炵幇鐨?<DSAKeyValue> 鏉ユ寚瀹氶獙璇佺鍚嶆墍闇鐨勫叕鍏卞瘑閽ャ?br />           * 鍦ㄧ▼搴忎腑浣跨敤 java.security 鍖呯敓鎴?DSA 瀵嗛挜瀵廣?/<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 />        //浠ュ叕閽ヤ負(fù)鍙傛暟鍒涘緩 <KeyValue> 鍏冪礌<br />        KeyInfoFactory keyInfoFac = fac.getKeyInfoFactory();<br />        KeyValue keyValue = keyInfoFac.newKeyValue(publicKey);<br />        //鏍規(guī)嵁鍒涘緩濂界殑 <KeyValue> 鍏冪礌鍒涘緩 <KeyInfo> 鍏冪礌錛?br />        KeyInfo keyInfo = keyInfoFac.newKeyInfo(Collections.singletonList(keyValue));<br />        /*榪欓噷鍒涘緩鐨勫瘑閽ュ錛屽叾涓殑鍏挜宸茬粡鐢ㄤ簬鍒涘緩 <KeyInfo> 鍏冪礌騫跺瓨鏀懼湪鍏朵腑錛屼緵絳懼悕楠岃瘉浣跨敤錛岃屽叾涓殑縐侀挜鍒欎細(xì)鍦ㄤ笅涓姝ヨ鐢ㄤ簬鐢熸垚絳懼悕銆?/<br />        <br />        //鍒涘緩 <Signature> 鍏冪礌<br />        /*鍓嶉潰宸茬粡鍒涘緩濂?<SignedInfo> 鍜?<KeyInfo> 鍏冪礌錛屼負(fù)浜嗙敓鎴愭渶緇堢殑鏁板瓧絳懼悕錛?br />        * 闇瑕佹牴鎹繖涓や釜鍏冪礌鍏堝垱寤?<Signature> 鍏冪礌錛岀劧鍚庤繘琛岀鍚嶏紝<br />        * 鍒涘緩鍑?<SignatureValue> 鍏冪礌銆?/<br />        XMLSignature signature = fac.newXMLSignature(signedInfo, keyInfo);<br />        <br />        /*XMLSignature 綾諱腑鐨?sign 鏂規(guī)硶鐢ㄤ簬瀵規(guī)枃妗h繘琛岀鍚嶏紝鍦ㄨ皟鐢?sign 鏂規(guī)硶涔嬪墠錛?br />        * 榪橀渶瑕佸垱寤?DOMSignContext 瀵硅薄錛屼負(fù)鏂規(guī)硶璋冪敤鎻愪緵涓婁笅鏂囦俊鎭紝<br />        * 鍖呮嫭絳懼悕鎵浣跨敤鐨勭閽ュ拰鏈鍚庣敓鎴愮殑 <Signature> 鍏冪礌鎵鍦ㄧ殑鐩爣鐖跺厓绱狅細(xì)*/<br />        <br />        DOMSignContext dsc =    new DOMSignContext(privateKey, doc.getDocumentElement());   <br />        <br />        //鐢熸垚絳懼悕<br />        /*sign 鏂規(guī)硶浼?xì)鐢熸垚绛惧悕鍊鹼紝騫朵綔涓哄厓绱犲煎垱寤?<SignatureValue> 鍏冪礌錛岀劧鍚庡皢鏁翠釜 <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.aygfsteel.com/java-god/aggbug/181759.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/java-god/" target="_blank">java flex 緇撳悎</a> 2008-02-24 14:05 <a href="http://www.aygfsteel.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"> <a href="http://www.aygfsteel.com/" title="狠狠久久亚洲欧美专区_中文字幕亚洲综合久久202_国产精品亚洲第五区在线_日本免费网站视频">狠狠久久亚洲欧美专区_中文字幕亚洲综合久久202_国产精品亚洲第五区在线_日本免费网站视频</a> </div> </footer> 主站蜘蛛池模板: <a href="http://" target="_blank">莒南县</a>| <a href="http://" target="_blank">大安市</a>| <a href="http://" target="_blank">东莞市</a>| <a href="http://" target="_blank">青河县</a>| <a href="http://" target="_blank">日土县</a>| <a href="http://" target="_blank">新宁县</a>| <a href="http://" target="_blank">甘孜县</a>| <a href="http://" target="_blank">甘德县</a>| <a href="http://" target="_blank">桂林市</a>| <a href="http://" target="_blank">施甸县</a>| <a href="http://" target="_blank">玉田县</a>| <a href="http://" target="_blank">沁水县</a>| <a href="http://" target="_blank">大同县</a>| <a href="http://" target="_blank">黔东</a>| <a href="http://" target="_blank">天峻县</a>| <a href="http://" target="_blank">江安县</a>| <a href="http://" target="_blank">德阳市</a>| <a href="http://" target="_blank">平原县</a>| <a href="http://" target="_blank">滁州市</a>| <a href="http://" target="_blank">万全县</a>| <a href="http://" target="_blank">关岭</a>| <a href="http://" target="_blank">昌宁县</a>| <a href="http://" target="_blank">南乐县</a>| <a href="http://" target="_blank">张家港市</a>| <a href="http://" target="_blank">陆丰市</a>| <a href="http://" target="_blank">陈巴尔虎旗</a>| <a href="http://" target="_blank">沈丘县</a>| <a href="http://" target="_blank">招远市</a>| <a href="http://" target="_blank">定襄县</a>| <a href="http://" target="_blank">子长县</a>| <a href="http://" target="_blank">庆云县</a>| <a href="http://" target="_blank">阜平县</a>| <a href="http://" target="_blank">阳朔县</a>| <a href="http://" target="_blank">融水</a>| <a href="http://" target="_blank">平湖市</a>| <a href="http://" target="_blank">军事</a>| <a href="http://" target="_blank">四平市</a>| <a href="http://" target="_blank">宁陵县</a>| <a href="http://" target="_blank">曲阜市</a>| <a href="http://" target="_blank">金昌市</a>| <a href="http://" target="_blank">岫岩</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>