當前位置:首頁 » 操作系統 » xml序列化源碼

xml序列化源碼

發布時間: 2022-03-01 23:49:09

1. 你好,帶屬性的XML序列化的方法要怎麼寫怎麼去識別 [XmlText]

(Streamstream,objecto,Encodingencoding)
{
if(o==null)
thrownewArgumentNullException("o");
if(encoding==null)
thrownewArgumentNullException("encoding");

XmlSerializerserializer=newXmlSerializer(o.GetType());

XmlWriterSettingssettings=newXmlWriterSettings();
settings.Indent=true;
settings.NewLineChars=" ";
settings.Encoding=encoding;
settings.IndentChars="";

using(XmlWriterwriter=XmlWriter.Create(stream,settings))
{
serializer.Serialize(writer,o);
writer.Close();
}
}

///<summary>
///將一個對象序列化為XML字元串
///</summary>
///<paramname="o">要序列化的對象</param>
///<paramname="encoding">編碼方式</param>
///<returns>序列化產生的XML字元串</returns>
(objecto,Encodingencoding)
{
using(MemoryStreamstream=newMemoryStream())
{
XmlSerializeInternal(stream,o,encoding);

stream.Position=0;
using(StreamReaderreader=newStreamReader(stream,encoding))
{
returnreader.ReadToEnd();
}
}
}

///<summary>
///從XML字元串中反序列化對象
///</summary>
///<typeparamname="T">結果對象類型</typeparam>
///<paramname="s">包含對象的XML字元串</param>
///<paramname="encoding">編碼方式</param>
///<returns>反序列化得到的對象</returns>
publicstaticTXmlDeserialize<T>(strings,Encodingencoding)
{
if(string.IsNullOrEmpty(s))
thrownewArgumentNullException("s");
if(encoding==null)
thrownewArgumentNullException("encoding");

XmlSerializermySerializer=newXmlSerializer(typeof(T));
using(MemoryStreamms=newMemoryStream(encoding.GetBytes(s)))
{
using(StreamReadersr=newStreamReader(ms,encoding))
{
return(T)mySerializer.Deserialize(sr);
}
}
}

這是幫助類的代碼

2. 求 一個 xml反序列化的源代碼,xml為3層機構,即節點下有很多元素,元素又有屬性。

xml反序列化是指轉換成業務對象么?如果是,你業務對象是什麼樣的啊?然後要的是專門正對這個xml的代碼吧?
<Root>
<student>
<Id>1</Id>
<phone>2132154654</phone>
<phone>123215458</phone>
</student>
<student>
<Id>2</Id>
<phone>2132154654</phone>
</student>
</Root>
大概的XML是這樣么?

3. 關於XML序列化求助

根據你提供的XML,創建三個類,然後再利用一樓的方法把這個XML文件反序化成MyData類。高手這兩個字我受不起,希望有更牛X的人來...
[Serializable]
public class something
{
pubilc int id {get;set;}
public string name{get;set;}
}
[Serializable]
public class MyFile
{
[xmlAttribute("name")]
pubilc string name{get;set;}
[xmlAttribute("size")]
pulic string size{get;set;}
[xmlElement("file")]
public List<something> listSomething{get;set;}
}
[Serializable]
[xmlRoot("data")]
pubilc class MyData
{
[xmlArray("files")]
[xmlArrayItem(file)]
public List<MyFile>ListMyfile{get;set;}
}

4. C#xml序列化

給你個思路,用反射(System.Reflection命名空間)來讀出對象中所有的屬性,然後用XmlDocument類讀取XML

5. 如何在C 實現自定義XML序列化問題,怎麼解決

對於字元串,你有一些選擇;xml可以簡單地用 XmlSerializer ( 或者 DataContractSerializer,但它提供了對xml的更少控制) 或者 JSON (JSON.net, 等來完成。
XmlSerializer的典型類看起來很簡單:

public class Apple {
public string Variety {get;set;}
public decimal Weight {get;set;}//etc}

( 注意我也希望上面的Json.NET 也能工作)
上面的類還應該在數據綁定場景中工作良好,這是由於。
你將序列化:
Apple obj = new Apple { Variety ="Cox", Weight = 12.1M};
XmlSerializer ser = new XmlSerializer(typeof(Apple));
StringWriter sw = new StringWriter();
ser.Serialize(sw, obj);
string xml = sw.ToString();
StringReader sr = new StringReader(xml);
Apple obj2 = (Apple)ser.Deserialize(sr);

但是你可以自定義 xml:
[XmlType("apple"), XmlRoot("apple")]public class Apple {
[XmlAttribute("variety")]
public string Variety {get;set;}
[XmlAttribute("weight")]
public decimal Weight {get;set;}//etc}

DataContractSerializer 是最理想的,更喜歡:
[DataContract]public class Apple {
[DataMember]
public string Variety {get;set;}
[DataMember]
public decimal Weight {get;set;}}

6. C# .Net Xml序列化與反序列化問題:Xml節點是動態的,不確定的,怎麼構建實體類對Xml進行(反)序列化

你是要控制序列化後xml文件嗎?正常情況下不需要控制序列化後的結果,否則需要實現IXmlSerializable介面,我實現過,很麻煩。

7. 對資料庫進行XML序列化

// Create the connection.
string constr = "User Id=scott;Password=tiger;Data Source=oracle";
OracleConnection con = new OracleConnection(constr);
con.Open();
// Create the command.
OracleCommand cmd = con.CreateCommand();
// Set the XML command type to query.
cmd.XmlCommandType = OracleXmlCommandType.Query;

// Change the SQL query, and set the maximum number of rows to 2.
cmd.CommandText = "select * from emp e";
// Set the XML query properties.
cmd.XmlQueryProperties.MaxRows = 2;
cmd.XmlQueryProperties.RootTag = "ROWSET";
cmd.XmlQueryProperties.RowTag = "ROW";

Stream stream = cmd.ExecuteStream();

// 將這個Stream寫到XML文件里就可以了,這步相信對你來說很容易

8. C#中的xml序列化過程(詳細的例子)

要序列化的對象:
[Serializable]
public class Person
{
public string Name{get;set;}
public int Age{get;set;}
}

實例化一個對象:
Person p = new Person();
p.Name="張三";
p.Age=18;

序列化:
Type typePer = p.GetType();
XmlSerializer xmlSer = new XmlSerializer(typePer);
using (FileStream fs = new FileStream("person.xml", FileMode.Create))
{
xmlSer.Serialize(fs, p);
}

也可以序列化一個LIST集合:
List lps = new List();
lps.Add(對象);
lps.Add(對象);
......
XmlSerializer x = new XmlSerializer(lps.GetType());
using (FileStream fs = new FileStream(@"D:\per.xml", FileMode.Create, FileAccess.Write))
{
x.Serialize(fs, lps);
}

9. c#xml序列化時,怎麼設置xml的編碼,我要設置為GBK編碼

請問樓主是如何把你的XML文檔改成UTF-8編碼的?

除了把XML文件中最開始的那個聲明變成 <?xml version="1.0" encoding="utf-8"?> 之外,還需要把這個XML文件本身另存為UTF-8的編碼方式(在VisualStudio裡面選擇另存為,在「保存」按鈕的右邊有個向下小箭頭,點開後選擇UTF-8)。不知樓主說的「高級頁面設置」是什麼?指的是「文件 - 高級保存選項」嗎?

此外,請問樓主的代碼是如何讀取這個XML的?是怎麼失敗的?拋出什麼異常了?

10. 寫出這個類對象XML序列化函數serialize

先將Solidworks中畫好的裝配體另存為.x_t的類型,如下圖所示,而且文件名一定要是英文的。

打開ADAMS,選擇Improt a file,然後在下面的Start in中找到你剛才保存的文件,要注意的是保存的路徑也要是英文的,比如保存在D盤的adams中,如下圖所示。

點擊OK按鈕,在彈出的對話框中按照下圖所示操作:在File Type中選擇Parasolid 開通的,在File To Read 中將滑鼠放在其對話框中,點擊右鍵,選擇Browse 找到你命名.x_t的文件;最後一行左邊,如果你是裝配體就選擇 Modle Name,如果是零件就選擇Part Name,在右邊同第二行一樣,點擊滑鼠右鍵,選擇create 然後在新彈出的對話框中輸入你想重新命的名字。要注意,一定不能直接輸入名字,否則最後在ADAMS中顯示不出來。

點擊OK按鈕,出現的圖如果是純線條的框圖,如下圖所示,那麼如何改為實體圖呢?

點擊右邊所示的工具條的最左下端的Render 便會出現所想要的實體圖形,如下圖所示。

熱點內容
短暫的訪問 發布:2024-09-23 01:29:08 瀏覽:827
安卓手機怎麼設置4位數 發布:2024-09-23 01:24:58 瀏覽:547
5g和演算法 發布:2024-09-23 01:20:40 瀏覽:506
pandas開發程序編譯 發布:2024-09-23 01:13:58 瀏覽:464
android應用被系統回收 發布:2024-09-23 01:10:36 瀏覽:446
c語言餐廳管理系統 發布:2024-09-23 01:01:35 瀏覽:93
linux系統新加網卡怎麼配置 發布:2024-09-23 01:01:34 瀏覽:893
java自我介紹一分鍾 發布:2024-09-23 00:51:34 瀏覽:672
告訴我解除密碼是多少 發布:2024-09-22 23:58:11 瀏覽:755
預演算法實施條例新 發布:2024-09-22 23:56:36 瀏覽:540