2014-03-28 67 views
-1

我有一個包含圖像的XML文件,圖像格式爲[[ID]],其中ID是存儲在數據庫中的圖像的唯一標識符。我想爲[[]]標籤解析這個XML文件,並將這些標籤替換爲將從數據庫中獲取的圖像。高達這一點,這就是我所做的解析圖像的XML文件

string xmlUrl = Server.MapPath("/Model Report.xsl"); 
XmlDocument doc = new XmlDocument(); 
doc.Load(xmlUrl); 

現在想分析的[[]]標籤文檔。在XML文件中的圖像看起來是這樣的(這僅僅是XML文件的一部分。)

<table-graphics.as-jpeg datatype="string" display-name="As JPEG">[[ID]]</table-graphics.as-jpeg> 

你的幫助是真正的讚賞。

+0

你的意思是「用圖片更換標籤」 ?您是否打算將圖像數據存儲在XML文件中? –

+0

@IainBallard:是的,我的XML文件包含需要從數據庫中提取的圖像 –

+0

那麼,您打算如何在XML中對圖像進行編碼?你是問如何查找數據庫,或者如何將字節編碼爲base64,或者如何在XML中查找文本? –

回答

0

查看C#中的XPath支持以幫助解析。

[...編輯...] 你要查找表graphics.as-JPEG元素,然後抓住其文本內容。 (在我腦子裏沒有確切的語法 - 我總是必須自己去查看它。)

+0

因特網上的教程提供了檢索子元素,屬性,元素值等的公平想法,但我想要的是掃描整個XML文件的[[]]標籤,如果你可以提供這方面的幫助。 –

0

對於我而言,你仍然不清楚你在問什麼。聽起來你正在試圖像純文本文檔一樣對待XML文檔;在這種情況下:

string xmlUrl = Server.MapPath("/Model Report.xsl"); 
string raw = new WebClient().DownloadString(xmlUrl); 

var output = new List<string>(); 

int left = 0; 
int right = 0; 
while ((left = raw.IndexOf("[[", right)) >= 0) { 
    int right = raw.IndexOf("]]", left); 
    if (right > left) output.Add(raw.Substring(left+2, right-left-2)); 
} 

應該給所有[[something]]在文檔中的模式。

如果你知道更多有關文檔,像所有的ID將在table-graphics.as-jpeg標籤,你應該使用XPath支持,馬克說:

string xmlUrl = Server.MapPath("/Model Report.xsl"); 
XmlDocument doc = new XmlDocument(); 
doc.Load(xmlUrl); 
foreach (XmlNode node in doc.SelectNodes("//table-graphics.as-jpeg")) 
{ 
    node.InnerText . . . 
}