2012-01-27 31 views
0

我在遇到以下問題時遇到了一些問題。我是初學者,這可能是爲什麼。從C#中讀取XML節點,當它是XAML中的資源時

我有一個顯示一些圖片的列表框,它從XML文件中獲取這些圖片的路徑。這個XML文件被定義爲XAML中的資源。如果選擇了一張圖片並且用戶按下了回車鍵,我想用一些參數啓動一個外部應用程序,包括在該XML文件的另一個節點中找到的路徑(下例中的appath)。

XML佈局:

<picture> 
    <path></path> 
    <appath></appath> 
</picture> 

我似乎無法找到訪問從C#節點的方式。 任何指針非常感謝!

由於提前, J.

+0

可以使用一些上下文代碼。 – 2012-01-27 16:47:26

回答

0

如果你沒有在圖片節點的任何屬性(某種類型的ID),你必須先匹配,你應該已經在路上你的列表框,然後返回appath。

static string GetAppath(string xmlString, string picPath) 
    { 
     string appath = String.Empty; 
     XmlDocument xDoc = new XmlDocument(); 
     xDoc.LoadXml(xmlString); 

     XmlNodeList xList = xDoc.SelectNodes("/picture"); 
     foreach (XmlNode xNode in xList) 
     { 
      if (xNode["path"].InnerText == picPath) 
      { 
       appath = xNode["appath"].InnerText; 
       break; 
      } 
     } 
     return appath; 
    } 
0

假設你的XML文件看起來像:

<?xml version="1.0" encoding="ISO-8859-1"?> 
<pictures> 
<picture> 
    <path></path> 
    <appath></appath> 
</picture> 
</pictures> 

如果你的資源名稱是圖片:

XElement resource = XElement.Parse(Properties.Resources.Pictures); 

使用這些擴展:(只類/文件複製到你的根您的項目目錄)http://searisen.com/xmllib/extensions.wiki

public class PicturesResource 
{ 
    XElement self; 
    public PicturesResource() 
    { self = XElement.Parse(Properties.Resources.Pictures); } 

    public IEnumerable<Picture> Pictures 
    { get { return self.GetEnumerable("picture", x => new Picture(x)); } } 
} 

public class Picture 
{ 
    XElement self; 
    public Pictures(XElement self) { this.self = self; } 

    public string Path { get { return self.Get("path", string.Empty); } } 
    public string AppPath { get { return self.Get("apppath", string.Empty); } } 

} 

然後,您可以綁定圖片或做一個查找他們:

PicturesResource pictures = new PicturesResource(); 
foreach(Picture pic in pictures.Pictures) 
{ 
    string path = pic.Path; 
    string apppath = pic.AppPath; 
} 

或搜索特定的圖片:

Picture pic = pictures.FirstOrDefault(p => p.Path = "some path"); 
if(pic != null) 
{ 
    // do something with pic 
}