2011-11-01 50 views
-2

我有以下xml文件,並且想用c#將它解析成.aspx表。我已經有了一個帶有aspx和cs文件的頁面。我試過這個,並且得到一個錯誤。有任何想法嗎。謝謝。 我還需要讓每個節點都有一個指向html錨點的鏈接,如果可能的話,它可以指向該項目。XML文件到html表(循環)C#

XmlDocument Doc = new XmlDocument(); 
Doc.Load(Server.MapPath("NewsSrc.xml")); 
XmlElement root = Doc.DocumentElement; 
XmlNodeList nodes = root.SelectNodes("/News"); 
if (!IsPostBack) 
{ 
Table tbl = new Table(); 
tbl.ID = "table1"; 
tbl.BorderWidth = 1; 
this.Controls.Add(tbl); 

foreach (XmlNode node in nodes) 
{ 
TableRow rw = new TableRow(); 
TableCell cell = new TableCell(); 
var element = (XmlElement)node; 
var Title = element.Value; //["Title"]; 
NewsItemTxt.Text = Title; //NewsItemtxt is label; 
cell.Controls.Add(NewsItemTxt); 
rw.Cells.Add(cell); 
tbl.Controls.Add(rw); 
} 
} 

//和XML文件//

<?xml version="1.0" encoding="utf-8" ?> 
<!-- Edited by myself --> 
<News> 
<NewsItem id="1"> 
<Title> news tile one </Title> 
<Summary> this is summary to show ....</Summary> 
<Details>details for this news</Details> 
</NewsItem> 

<NewsItem id="2"> 
<Title>test title </Title> 
<Summary>sm line</Summary> 
<Details> no details</Details> 
</NewsItem> 
</News> 
+1

你得到什麼錯誤? – drdwilcox

+1

我強烈建議在客戶端而不是服務器上執行此操作。 –

+0

錯誤是:var Title = element.Value; – Fm3

回答

0

試試這個,它使用的System.Xml和System.Xml.Linq的,它應該工作,但我不能保證這一點:

var xmlDoc = XDocument.Load(new XmlTextReader(Server.MapPath("NewsSrc.xml"))); 
foreach(var descendant in xmlDoc.Descendants("NewsItem")) 
{ 
    var title = descendant.Element("Title").Value; 
    var summary = descendant.Element("Summary").Value; 
    var details = descendant.Element("Details").Value; 
    var id = descendant.Attribute("id").Value; 
} 
+0

非常感謝,這很好。任何想法如何做到每個節點/元素的HTML錨點。例如有沒有一種方法可以調用ID。謝謝 – Fm3

+0

@ Fm3我已經添加了如何在我的答案中獲得屬性值「id」,關於錨標籤,您可以創建一個超鏈接控件,將所需的url和id值一起添加到單元格中。另外,因爲我的答案幫助你應該接受它作爲答案。 – Joakim

+0

Joakim,謝謝。 – Fm3

0

這個回答假設我們現在談論的是ASP.NET的解決方案:

也許你應該看看some tutorials on using an XmlDataSource。一旦你的數據源被配置好了,你可以綁定到一個GridView/DataList控件(或者Repeater,如果你想更好地控制輸出)。

+0

任何人都可以修正我的代碼。我不希望gridview。謝謝 – Fm3

+0

,因爲你沒有告訴我們你收到了什麼錯誤,不,我們不能「修正你的代碼」。 – drdwilcox

0

直到我們知道錯誤,這裏是一個在黑暗中拍攝:

如果該節點的NodeType是「元素」(從在文檔短暫一瞥,它很可能是這樣的<Title>標籤會是什麼考慮),其Value屬性將爲空。 As per MSDN

可以使用XmlElement.InnerTextXmlElement.InnerXml屬性 訪問元素節點的值。

看看是否修復它。再次,我最好的猜測,因爲我們不知道什麼是錯的。