以名稱 - 值對的形式給出一堆數據我如何將它構造成xml?將名稱值對轉換爲xml
如:
標題:先生
名稱:約翰
姓:李四
爲有效的XML sililar到:
<Data>
<Title>Mr</Title>
<Name >John</Name >
<Surname >Doe</Surname >
</Data>
以名稱 - 值對的形式給出一堆數據我如何將它構造成xml?將名稱值對轉換爲xml
如:
標題:先生
名稱:約翰
姓:李四
爲有效的XML sililar到:
<Data>
<Title>Mr</Title>
<Name >John</Name >
<Surname >Doe</Surname >
</Data>
假設你正在使用.NET:
你可以做,在System.Linq.Xml
var data=nameValuePair.Value;
var xelement=new XElement("Data",
new XElement("Title",data.Title),
new XElement("Name",data.Name),
new XElement("Surname",data.Surname));
使用的XElement這是否回答您的問題?
我使用.net 2.0 – raklos 2009-08-17 12:03:49
這是一個恥辱,Linq到XML值得升級到3.5所有由本身IMO – 2009-08-17 12:08:58
無論你做什麼,都可以使用支持XML的API來完成。不要簡單地讀取字符串並在標籤之間寫出。這很誘人,因爲它很方便,但您必須擔心字符和實體編碼以正確生成XML。
假設你有一個鍵值pairs..something像字典一樣..
XElement xe = new XElement("Data", from kvp in dict
select new XElement(kvp.Key, kvp.Value));
如果所有的數據總是在說形式&你有一大堆的話, 創建一個類與成員&將其序列化爲xml。
public class test
{
public string title;
public string name;
public string surname;
}
void main()
{
List<test> t = new List<test>();
test t1 = new test();
t1.title = "Mr.";
t1.name = "John";
t1.surname = "Doe";
.
.
.
test tn = new test();
t.Add(t1);
t.Add(t2);
.
.
.
.
t.Add(tn);
//Serialize to xml.
try
{
using (FileStream fs = new FileStream(szFileName, FileMode.Create))
{
XmlSerializer xs = new XmlSerializer(typeof(List<test>));
xs.Serialize(fs, t);
}
}
catch(Exception Ex)
{
Messagebox.Show(Ex.ToString());
}
//And deserialize the data from xml to objects
try
{
using (System.IO.FileStream fs = new FileStream(szDataFile,FileMode.Open))
{
System.Xml.Serialization.XmlSerializer xs = new XmlSerializer(typeof(List<test>));
List<test> t1 = new List<test>();
t1 = xs.Deserialize(fs) as List<test>;
}
}
catch(Exception Ex)
{
Messagebox.Show(Ex.ToString());
}
}
使用Gelatin這個語法:
define nl /[\r\n]/
define ws /\s+/
define fieldname /\w+/
define value /[^\r\n,]/
grammar input:
match nl:
do.skip()
match fieldname ':' ws value nl:
out.add('$0', '$3')
你已經給了你希望看到的轉變的一個例子。你在問如何實際編寫代碼來做到這一點?你試過什麼了? – 2009-08-17 11:48:46
新的xml用戶最大的陷阱就是試圖用xHTML來看你想要的樣子。我的建議是:只要它有效,無論它是否有效,讓它工作。不要試圖讓它「看」你認爲它應該看起來如何。它只是浪費時間。 – Will 2009-08-17 11:59:01
@將:ACK。大多數時候,關心序列化XML *看起來如何*意味着深刻的誤解,即XML是文本,可以用文本工具(如正則表達式)處理。一旦你犯了這個錯誤,你就開始關心輸出XML是如何呈現的。 – Tomalak 2009-08-17 12:30:51