2009-07-27 9 views
1

xamlファイル(continsイメージファイル情報)のパスを含むxmlファイルがあります。xmlファイルを解析し、xamlに存在するイメージを取得してウィンドウのフォームに表示する必要があります。XAMLファイルを解析する方法は?

この点で私を助けてくれる人はいますか?

答えて

1

XAMLはXMLであるため、XMLとして解析し、これらのアプローチのいずれかを使用して必要なデータを抽出します。

0

イメージファイル情報の形式について少し詳しく説明する必要がありますが、ファイルパスとしてXAMLに格納されている場合は、.NETのXMLTextReaderを使用してトリックを行う必要があります。 c-sharpcorner.comには役立つコードサンプルがいくつかあります。このようなXMLファイル(または文字列)を持っている場合は

2

<ImageData> 
    <Path>Res\image.xaml</Path> 
</ImageData> 

...と、このようなファイル "RESの\ image.xaml" のXAML辞書:

<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"> 
    <Image x:Key="imageKey" Source="img.jpg"/> 
</ResourceDictionary> 

...あなたは(XMLにLINQを使用して)このような画像要素のソースパスを取得することができます:

private string GetImagePath(string xmlString) 
{ 
    XElement xmlData = XElement.Parse(xmlString); 

    XElement pathElement = xmlData.XPathSelectElement("ImageData/Path"); 

    if (pathElement == null) return null; 

    string xamlPath = pathElement.Value; 

    XElement xamlData = XElement.Load(xamlPath); 

    XElement imageElement = xamlData.XPathSelectElement("//Image"); 

    if (imageElement == null) return null; 

    XAttribute pathAttribute = imageElement.Attribute("Source"); 

    return pathAttribute == null ? null : pathAttribute.Value; 
} 

これは、もちろん、上の目安でありますどのようにするか、あなたのモデルに合うように、いくつかの実験の後にこれを微調整してください。

+0

サンプルコードありがとうございます。 しかし、私の要件はドットネット2.0です。 dotnet 2.0でどのように同じことを達成することができますか? –

+0

これは、xamlと同じツールでxamlを解析し、検索時にノードと属性を区別するように注意します。 http://www.codeproject.com/KB/XML/WorkingwithXML.aspx –

+0

大変ありがとうございます:-)ここでは、古いxmlツールを使用してサンプル記事を見ることができます。 –

関連する問題