zoukankan      html  css  js  c++  java
  • xml學習心得

     

    第一部分

                        ----基本信息

    1、 如何顯示xml中的信息,運用xsl:具體如何實現如下:

    protected System.Web.UI.WebControls.Xml myXml;----聲明一個xml對象
    //加載xml信息
    XmlDocument xmlDoc= new XmlDocument();
    xmlDoc.Load(Server.MapPath(
    "book.xml"));
    this.myXml.Document=xmlDoc;

    //加載樣式表                
    XslTransform xslTrans=new XslTransform();
    xslTrans.Load(Server.MapPath(
    "book.xsl"));
    myXml.Transform
    =xslTrans;

    2、 如果在client端加載讀取信息,操作如下:

    1、   通過一定的條件來讀取:

    var dom =new ActiveXObject"msxml2.DOMDocument.3.0");
    var re;
    re = /\s/g;
    dom.async = false;
    dom.validateOnParse = false;
    dom.resolveExternals = false;
    var xpath,show_message;
    dom.load("xml/pensionlist.xml");
    xpath="/Persions/persion[@Staff_id='"+ per_id +"']";                 
    node1=dom.selectSingleNode(xpath);
    if (node1 != null){
    node1.childNodes(0).text----第一個節點的信息
    node1.childNodes(9).childNodes(0).text-----第十個節點的第一個子節點信息
    }

     2、  無條件的讀取:

    var oDoc = new ActiveXObject"Microsoft.XMLDOM"); 
    oDoc.load("1.xml");       
    var objFile1=oDoc.selectSingleNode("//New_CODE");---直接取得的
    strcno=objFile1.text;
    var root=oDoc.documentElement;
    var objFile=root.selectNodes("//SUB_SEQ");-----可以進行循環的
         for(var inti=0;inti
    <objFile.length;inti++)
         {    
          alert(objFile.item(inti).text);
         }

    3、 新增信息到xml文檔中,操作如下:(server端操作)

    第一種方法:

    XmlDocument xmlDoc=new XmlDocument();

    xmlDoc.Load(Server.MapPath(
    "book.xml"));-------加載信息

    if(xmlDoc.DocumentElement.IsEmpty){------------判斷是否為空

           xmlDoc.LoadXml(
    "<gusetbook/>");----------沒有的話新增

    }


    XmlNode xmlNote
    =xmlDoc.DocumentElement.AppendChild(xmlDoc.CreateElement("book"));

    -----新增第一個節點:book,下面是加其節點的兩個屬性:時間:date及代號:Staff_id

    XmlAttribute xmlattr
    =xmlDoc.CreateAttribute("date");---創建一個屬性date

    xmlattr.Value
    =System.DateTime.Now.ToString("yyyy-MM-dd HH-mm-ss");--設定屬性信息

    xmlNote.Attributes.Append(xmlattr);
    ----在book節點上新增一個屬性

    //新增另一個屬性,要找出本xml文檔中的最大號,進行比較

    XmlElement xmld 
    = xmlDoc.DocumentElement;----聲明一元素

    string strmax="";

    int count_elem=0;

    count_elem
    =xmld.ChildNodes.Count - 2;-----找到最大節點的index

    XmlElement nodeee 
    = (XmlElement)xmld.ChildNodes[count_elem];──找到此節點並轉類型

    strmax
    =nodeee.GetAttribute("Staff_id");---取到想要的信息

    xmlattr
    =xmlDoc.CreateAttribute("Staff_id");-----增加些元素

    xmlattr.Value
    =strmax.Substring(0,5)+(int.Parse(strmax.Substring(5,1))+1) ;

    xmlNote.Attributes.Append(xmlattr);

    //增加一個型式的節點

    childnote
    =xmlNote.AppendChild(xmlDoc.CreateElement("adress"));

    childnote.InnerText
    =stradress;

    //add skill----增加另一個樣式的節點,此節點又有子節點

    childnote
    =xmlNote.AppendChild(xmlDoc.CreateElement("P_Skills"));

    for(int i=0;i<3;i++){

          XmlNode childsnote
    =null;

          childsnote
    =childnote.AppendChild(xmlDoc.CreateElement("P_Skill" & (i+1)));

          childsnote.InnerText
    ="java"+i;

     }


     
    //增加有data樣式的節點,如<message><![CDATA[xxxxxxxx]]> </message>

    childnote
    =xmlNote.AppendChild(xmlDoc.CreateElement("message"));

    childnote.AppendChild(xmlDoc.CreateCDataSection(strmessage));

    //保存新增後的文件

    xmlDoc.Save(Server.MapPath(
    "book.xml"));

    第二種方法:

    XmlDocument xmlDoc=new XmlDocument();

              xmlDoc.Load(Server.MapPath(
    "users.xml"));

                    

               XmlNode xmlRoot
    =xmlDoc.DocumentElement;

     

               XmlElement xmlUser
    =xmlDoc.CreateElement("User");

               XmlElement xmlName
    =xmlDoc.CreateElement("Name");

               XmlElement xmlEmail
    =xmlDoc.CreateElement("Email");

               XmlElement xmlPassword
    =xmlDoc.CreateElement("Password");

                    

              xmlName.InnerText
    ="addName";

               xmlEmail.InnerText
    ="addEmail";

               xmlPassword.InnerText
    ="addPassword";

                    

               xmlUser.AppendChild(xmlName);

               xmlUser.AppendChild(xmlEmail);

               xmlUser.AppendChild(xmlPassword);

                    

               XmlAttribute xmlattr
    =xmlDoc.CreateAttribute("newAttr");

               xmlattr.Value
    ="AttributeValue";

               xmlDoc.DocumentElement.SetAttributeNode(xmlattr);

     

           xmlRoot.AppendChild(xmlUser);


    4、 
    修改一畢資料,server端,操作如下:

    XmlDocument xmlDoc= new XmlDocument();

     xmlDoc.Load(Server.MapPath(
    "book.xml")); 

     
    string xpth_str="";

     xpth_str
    ="/guestbook/book[@Staff_id='" + this.txtCNO_ID.Text + "']";

    System.Xml.XmlElement xmlet
    =xmlDoc.DocumentElement;

     System.Xml.XmlNode xmnode
    =xmlet.SelectSingleNode(xpth_str);-------取得有條件相關節點

            xmnode.ChildNodes[
    4].ChildNodes[0].InnerText=xmnode.ChildNodes[4].ChildNodes[0].InnerText.ToString()+"66";

            xmnode.ChildNodes[
    4].ChildNodes[1].InnerText=xmnode.ChildNodes[4].ChildNodes[1].InnerText.ToString()+"66";

            xmnode.ChildNodes[
    4].ChildNodes[2].InnerText=xmnode.ChildNodes[4].ChildNodes[2].InnerText.ToString()+"66";

    ///以上為讀取有子節點的節點相關資料並進修改

     
    string strmess=xmnode.ChildNodes[5].InnerText.ToString();

     System.Xml.XmlNode mess
    =xmnode.SelectSingleNode("message");

     mess.RemoveAll();

    mess.AppendChild(xmlDoc.CreateCDataSection(strmess
    +"_upd"));

    //修改data資料

    xmlDoc.Save(Server.MapPath(
    "book.xml"));


    5、 
    刪除指定節點,操作如下:(在server端)

    XmlDocument xmlDoc= new XmlDocument();

        xmlDoc.Load(Server.MapPath(
    "book.xml")); 

        
    string xpth_str="";

        xpth_str
    ="/guestbook/book[@Staff_id='" + this.txtCNO_ID.Text + "']";

        System.Xml.XmlElement xmlet
    =xmlDoc.DocumentElement;

        xmlet.RemoveChild(xmlet.SelectSingleNode(xpth_str));
               

    xmlDoc.Save(Server.MapPath(
    "book.xml"));



    第二部分

    ───xsl的語法運用

    1、 xml的語法結構:

    <?xml version="1.0" encoding="utf-8"?>

    ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,

    如下是一個本測試中的example: 

    <guestbook>

     
    <book date="2006-01-05 18:10:00" Staff_id="c03031">

        
    <name>Susan</name>

        
    <email>snowonyou@eyou.com</email>

        
    <homepage>http://www.hao123.com</homepage>

        
    <adress>河南許昌</adress>

        
    <P_Skills>

          
    <P_Skill1>ASP</P_Skill1>

          
    <P_Skill2>ASP.NET</P_Skill2>

          
    <P_Skill3>SQL</P_Skill3>

        
    </P_Skills>

        
    <message><![CDATA[這是我第2個用xml做的例子,學習學習,加油!!不認輸!_upd]]></message>

     
    </book> 

    </guestbook>


    2、 xsl的語法結權
    <?xml version="1.0" encoding="utf-8" ?>

    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

    <xsl:template match="guestbook">

    ,,,,,,,對相關資料進行操作

    </xsl:template>

    </xsl:stylesheet>

    下面是一個例子:

    <xsl:template match="guestbook">

    <html>

    <body bgcolor="#CCCC66" onselectstart="return false">

    <center><h1>留言版</h1></center>

    <table border="1" width="100%" bgcolor="#bbCCCC">

    <tr bgcolor="#0099CC">

    <td>最新留言||<href="../index.html">我要留言</a></td>

    </tr>

    <tr>

    <table width="100%" border="1">

    <xsl:for-each select="book">

    <xsl:sort select="@date"></xsl:sort>

    <tr bgcolor="#bbCC00">

    <td rowspan="2" width="20%">

         學號:
    <xsl:value-of select="substring(@Staff_id, 1, 3)"></xsl:value-of>

         留言人:
    <xsl:value-of select="name"></xsl:value-of><p/>

         來自:
    <xsl:value-of select="adress"></xsl:value-of><p/>

         技能:
    <xsl:value-of select="P_Skills/P_Skill1" />

               
    <xsl:value-of select="P_Skills/P_Skill2" />

               
    <xsl:value-of select="P_Skills/P_Skill3" />

    </td>

    <td width="80%">

    留言時間:
    <xsl:value-of select="@date"></xsl:value-of>||

         Email:
    <xsl:value-of select="email"></xsl:value-of>||

         個人主頁:
    <xsl:value-of select="homepage"></xsl:value-of>

    </td>

    </tr>

    <tr >

    <xsl:attribute name="ONCLICK">alert("呵呵,原來是這樣呀");</xsl:attribute>

    <xsl:attribute name="oncontextmenu">

        window.event.cancelBubble _u32 ?true;check_log();loadContextMenu('context.xml',

    '
    <xsl:value-of select="@Staff_id"></xsl:value-of>',

    '
    <xsl:value-of select="name"></xsl:value-of>');return false;

     
    </xsl:attribute>

    <td width="72%">

    <xsl:choose>

    <xsl:when test="position()=last()">

    <a><xsl:attribute name="title">

       這是最後一畢

    </xsl:attribute>

         
    <pre><xsl:value-of select="message"></xsl:value-of></pre>

         
    </a>

    </xsl:when>

    <xsl:otherwise>

    <pre><xsl:value-of select="message"></xsl:value-of></pre>

    </xsl:otherwise>

    </xsl:choose>

    </td>         

    </tr>

    </xsl:for-each>

    </table>

    </tr>

    </table>

    </body>

    </html>

    </xsl:template>

    </xsl:stylesheet>
  • 相关阅读:
    What is the difference between Serialization and Marshaling?
    IEEE Standard 754 for Binary Floating-Point Arithmetic
    没有单元测试,就很难有真正的积累。
    一般只用 20% 的代码就可以解决 80% 的问题。但要想解决剩下 20% 的问题的话,则需要额外 80% 的代码。
    为失败设计,大量引入对SRE的理解,鲁棒性高
    用git合并分支时,如何保持某些文件不被合并
    git 分支合并时如何忽略某个文件
    Golang拼接字符串的5种方法及其效率_Chrispink-CSDN博客_golang 字符串拼接效率 https://blog.csdn.net/m0_37422289/article/details/103362740
    Lua大量字符串拼接方式效率对比及原因分析
    干货 | 携程多语言平台-Shark系统的高可用演进之路
  • 原文地址:https://www.cnblogs.com/freeliver54/p/372638.html
Copyright © 2011-2022 走看看