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 >
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值