私はメタデータを保存するために書いているXMLファイルからデータを取得するために、子孫、要素、および属性を永遠に試してきました。私は現時点ではできないし、私の仕事を妨げている。 XMLにLinqを使用していたとき、私は何の価値ももたらさず、なぜ起こったのか分からなかった。 XMLファイルにXElement内の値を取得
クイックルック
<ImageMetadata>
<ColorHistogram>
<Bin value="45861"/>
<Bin value="31989"/>
</ColorHistogram/>
<FaceLocations>
<FacePosition Y="379" X="205"/>
<FacePosition Y="366" X="372"/>
</FaceLocations>
</ImageMetadata>
私は別の解決策を試してみました。最初は、私は、代わりにこのコードにつながる属性値を持つタグビンのBinValueと呼ばれるのXElementを持っていた。その後、XMLにLINQで怒っ取得した後、私は構造に私の文書のビットを変更し
//Yielding no results
from elements in doc.Descendants()
let element = elements.Element("BinValue")
select (long)element;
タグと属性を持つこと。しかし、これは何の効果もありません。
var bins = XElement.Load(dbMetadata)
.Descendants("Bin")
.Select(e => e.Attribute("value").Value);
// which gives me : System.ArgumentException: 'Illegal characters in path.'
私のユースケースを使用すると、XML構造から集まってきた可能性があり、以下である:イメージファイルの作成メタデータ。その部分はOpenCVで非常によく見えますが、それは私の問題ではありません。おそらく、私の問題についてより多くのフィードバックを得るために、私がXML文書を構築するために使用していたコードを追加することが適切でしょう。
イメージ上のデータを計算する部分は、F#を使用して行われました。 xmlドキュメントを作成する部分はC#を使用して行われました。そのため、私はコードを共有するために2つの要点を作成します。あなたのソリューションにEmgu OpenCVナゲットパッケージを追加してください。
**メタデータを生成しますF#コードを実行するために、任意の2つのローカルJPGファイルを使用してください!
**可能であれば、LINQ to XMLを使用してデータを取得する方法が必要です。 ColorHistogramとFaceLocations
UPDATE1
の両方のために私は私の問題が発生したときに、XMLファイルの状態を表示するために、コメントに頼まれました。あなたは以下のそれを見つけることができます。
? – har07
@ har07 dbMetadataの状態は、メタデータファイル内にあります。私は自分の投稿を更新しました –
XMLファイルの一部しか表示していないようです。あなたが[mcve]を提供するのが役に立ちます。これは、例えば、ルート内のデフォルトのXML名前空間が原因である可能性があります。 (あなたがリンクしているファイルでは、たぶん...そうではないかもしれませんが、基本的にこの質問にはあまりにも混乱があります.1つの短いコンソールアプリケーションでこれを簡単に修正できます) –