XML结构简介
NodeType:
XmlDeclaration eg. <?xml version="1.0"?> Whitespace Comment eg.
Element eg. '<'ElementName ArAttribute1 =“1” Attribute2=“2” ‘>’ Text eg. ‘<‘Element’>‘Text’<’/Element’>’ EndElement eg. ‘<’/ElementName’>’
读ElementName
XmlReader rdr= XmlReader. Create ( "books.xml" ) ;
while ( rdr. Read ( ) )
{
if ( rdr. NodeType == XmlNodeType. Element)
{
richTextBox1. AppendText ( rdr. Name+ "\r\n" ) ;
}
}
读Text
< -- method 1 -- >
XmlReader rdr = XmlReader. Create ( "books.xml" ) ;
While ( rdr. Read ( ) )
{
if ( rdr. NodeType == XmlNodeType. Text)
richTextBox1. AppendText ( rdr. Value + "\r\n" ) ;
}
< -- method 2 -- >
XmlReader rdr = XmlReader. Create ( "books.xml" ) ;
while ( rdr. Read ( ) )
{
if ( rdr. NodeType == XmlNodeType. Element)
{
if ( rdr. Name == "price" )
{
decimal price = rdr. ReadElementContentAsDecimal ( ) ;
richTextBox1. AppendText ( "Price = " + price + “\r\n”) ;
}
}
}
< -- method 3 -- >
XmlReader rdr = XmlReader. Create ( "books.xml" ) ;
while ( ! rdr. EOF)
{
if ( rdr. MopveToContent ( ) == XmlNodeType. Element && rdr. Name == “title”)
{
richTextBox1. AppendText ( rdr. ReadElementString ( ) + "\r\n" ) ;
}
else
{
rdr. Read ( ) ;
}
}
读Attribute
XmlReader tr = XmlReader. Create ( "books.xml" ) ;
while ( tr. Read ( ) )
{
if ( tr. NodeType == XmlNodeType. Element)
{
for ( int i = 0 ; i< tr. AttributeCount; i++ )
{
richTextBox1. AppendText ( tr. GetAttribute ( i) + "\r\n" ) ;
}
}
}
写 Xml
XmlWriteSettings settings = new XmlWriteSettings ( ) ;
settings. Indent = true ;
settings. NewLineOnAttributes = true ;
XmlWriter writer = XmlWriter. Create ( "newbook.xml" , settings) ;
writer. WriteStartDocument ( ) ;
writer. WriteStartElement ( "book" ) ;
writer. WriteAttributeString ( "genre" , "Mystery" ) ;
writer. WriteAttributeString ( "publicationdata" , "2001" ) ;
Writer. WriteElementString ( "title" , "Case of the Missing Cookie" ) ;
writer. WriteStartElement ( "author" ) ;
writer. writeElementString ( "name" , "Cookie Monster" ) ;
writer. WriteEndElement ( ) ;
writer. WriteElementstring ( "price" , "9.99" ) ;
writer. WriteEndElement ( ) ;
writer. WriteEndDocument ( ) ;
writer. Flush ( ) ;
writer. Close ( ) ;
通过序列化和反序列化读写Xml
序列化写Xml 将自定义类的成员属性直接写入Xml文件并导入
string infoFile = @"info.xml" ;
Info info = new Info ( ) ;
info. IP = "127.0.0.0" ;
info. Port = "502" ;
info. Name = "Me" ;
TextWriter tr = new streamWriter ( info) ;
XmlSerializer sr = new XmlSerializer ( typeof ( Info) ) ;
sr. serialize ( tr, info) ;
tr. close ( ) ;
反序列化读Xml 读取xml直接初始化自定义的类
string infoFile = "info.xml" ;
Info info = new Info ( ) ;
FileStream f;
try
{
f= new FileStream ( @infoFile, FileMode. Open) ;
FileInfo fi = new FileInfo ( @infoFile) ;
if ( fi, Length == 0 )
{
f. Dispose ( ) ;
return ;
}
XmlSerializer newSr = new XmlSerializer ( typeof ( Info) ) ;
info = ( Info) newSr. Deserialize ( f) ;
f. Close ( ) ;
}
catch { }