2012-10-11 34 views
0

從XML結構中的數據I XML文件存儲在一個字符串對象等,我存儲在XML結構中,在c#本地變量字符串ABCD讀取使用C#

<structure> 
    <a>Test Name</a> 
    <e>test address</e> 
    <c> 
     <c1>yyyy<c1> 
     <c2>xxxx</c2> 
    </c> 
    </structure> 

如何使用C#讀取(解析)這個XML字符串並使用C#的標籤,標籤和C1,C2標值存儲在本地變量。

我試圖像

 XmlDocument xmldoc = new XmlDocument(); 
     xmldoc.LoadXml(abcd); 

     XmlElement element = (XmlElement)xmldoc.GetElementById("a"); 

,但我得到空value.how來讀取XML結構的值,並使用C#存儲在本地變量?

回答

2

Linq2Xml更易於使用。

var xElem = XElement.Parse(abcd); 
var a = xElem.Element("a").Value; 
var c = xElem.Element("c").Element("c1").Value; 
+0

其工作很好....簡單 –

0
string test = " <structure><a>Test Name</a><e>test address</e><c><c1>yyyy</c1><c2>xxxx</c2></c></structure>"; 

     DataSet dataSet = new DataSet(); 

     dataSet.ReadXml(new StringReader(test)); 
     DataTable dt11 = new DataTable(); 
     DataTable dt12 = new DataTable(); 
     //return single table inside of dataset 
     if (dataSet.Tables.Count > 1) 
     { 
      dt11 = dataSet.Tables[0]; 
      dt12 = dataSet.Tables[1]; 
     } 
2

您可以使用LINQ到XML:

var xDoc = XDocument.Parse(xml); 

var a = xDoc.Descendants("a").First().Value; 
var c1 = xDoc.Descendants("c1").First().Value; 
var c2 = xDoc.Descendants("c2").First().Value; 
+0

從字符串不是從XML文件 – andy

+0

@Anandkumar,仍然是一個很好的答案。 +1朋友。 –

+1

@Anandkumar:編輯,仍然一樣 –

0

非常接近!將其更改爲:

XmlDocument xmldoc = new XmlDocument(); 
xmldoc.LoadXml(abcd); 

XmlElement element = xmldoc.Root.Element("a").Value; 
0

如果我理解您試圖訪問每一個不同的標籤在XML文檔中,所以你應該使用GetElementsByTagName而不是GetElementById。這將返回一個包含所有節點都與標籤名稱的XmlNodeList對象,你可以得到第一個爲NodeList.Item(0).InnerXml;

0

要接受的答案使用的XDocument類,你需要添加:

using System.Xml.Linq; 

*從解決方案資源管理器中找到
*右鍵單擊「添加參考」
*搜索裝配0 *單擊左側
出現的複選框*選擇好