Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/264.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从C#读取XML节点时';它是XAML中的一个资源_C#_Wpf_Xaml - Fatal编程技术网

从C#读取XML节点时';它是XAML中的一个资源

从C#读取XML节点时';它是XAML中的一个资源,c#,wpf,xaml,C#,Wpf,Xaml,我在以下方面遇到了一些问题。我是初学者,这可能就是原因 我有一个显示一些图片的列表框,它从XML文件中获取这些图片的路径。此XML文件在XAML中定义为资源。如果选择了一张图片,用户按enter键,我想启动一个带有一些参数的外部应用程序,包括在该XML文件的另一个节点中找到的路径(下面示例中的appath) XML布局: <picture> <path></path> <appath></appath> </pictu

我在以下方面遇到了一些问题。我是初学者,这可能就是原因

我有一个显示一些图片的列表框,它从XML文件中获取这些图片的路径。此XML文件在XAML中定义为资源。如果选择了一张图片,用户按enter键,我想启动一个带有一些参数的外部应用程序,包括在该XML文件的另一个节点中找到的路径(下面示例中的appath)

XML布局:

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

我似乎找不到从C#访问节点的方法。 非常感谢任何指点

提前感谢,,
J.

如果图片节点中没有任何属性(某种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;
    }

假设您的xml文件看起来像:

<?xml version="1.0" encoding="ISO-8859-1"?>
<pictures>
 <picture>
   <path></path>
   <appath></appath>
 </picture>
</pictures>
使用这些扩展名:(只需将类/文件复制到项目的根目录中)

或搜索特定图片:

Picture pic = pictures.FirstOrDefault(p => p.Path = "some path");
if(pic != null)
{
    // do something with pic
}
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
}