2009-10-30 94 views
0

我有一個XML文檔,其中包含我的數據,同一節點字段(StudentID = FirstName,LastName等)的多個條目。如何將節點轉換爲每個StudentID部分的字符串值?C#Xml節點到字符串

+0

你能舉出當前的XML和你想要的字符串的例子嗎? – 2009-10-30 23:51:38

+0

這是我到目前爲止: XmlDocument xmlReturnDoc = new XmlDocument(); xmlReturnDoc.Load(「Data.xml」); XmlNodeList xnList = xmlReturnDoc.SelectNodes(「/ Students/Student」); foreach(xmlList中的XmlNode xn) { string firstName = xn [「FirstName」]。InnerText; string lastName = xn [「LastName」]。InnerText; MessageBox.Show(「Name is:」+ firstName +「」+ lastName); } 這可以工作,但會依次顯示消息框中的條目的名字和姓氏。有沒有辦法將條目分成字符串? – 2009-10-31 00:09:15

回答

4

編輯你不說太多關於什麼XML是什麼樣子。但它可能去是這樣的:

string xml = "<nodes><studentid><firstname>Name</firstname><lastname>last</lastname></studentid></nodes>"; 
XmlDocument doc = new XmlDocument(); 
doc.LoadXml(xml); 
foreach (XmlNode node in doc.SelectNodes("//studentid")) 
{ 
    string first = node["firstname"].InnerText; 
    string last = node["lastname"].InnerText; 
} 

如果數據是屬性使用的線沿線的東西:

string first = node.Attributes["firstname"].Value; 

你也可以看看LINQ對XML的,如果你有一個模式。

0

您正在尋找節點的innerText(標籤內的值,而不是標籤屬性數據)還是outerXml(它具有所有標籤數據)?

此外,你使用CDATA?還有一點你需要做的是正確地從數據中提取數據。或者,你是否希望立即全部使用 - 在這種情況下,您需要使用XSLT轉換。

+0

基本上這個:http://www.csharp-examples.net/xml-nodes-by-name/但是把代碼放在一個MessageBox.Show中,我使用一個Win App窗體和一個按鈕... – 2009-10-30 23:55:33

0

複製和http://www.csharp-examples.net/xml-nodes-by-name/

//on button click before the following: 

XmlDocument xml = new XmlDocument(); 
xml.LoadXml(myXmlString); // suppose that myXmlString contains "<Names>...</Names>" 

XmlNodeList xnList = xml.SelectNodes("/Names/Name"); 
StringBuilder sb = new StringBuilder(); 
string entry = "Name: {0} {1}\r\n"; 
foreach (XmlNode xn in xnList) 
{ 
    string firstName = xn["FirstName"].InnerText; 
    string lastName = xn["LastName"].InnerText; 
    sb.AppendFormat(entry, firstName, lastName); 
} 

MessageBox.Show(sb.ToString());