我一直想永遠使用後代,元素和屬性來檢索XML文件,我正在寫保存元數據的數據值。我目前無法阻止我的工作。當我將Linq用於XML時,我沒有產生任何價值,我也無法解釋爲什麼會發生。獲取裏面的XElement
快速查看到的XML文件
<ImageMetadata>
<ColorHistogram>
<Bin value="45861"/>
<Bin value="31989"/>
</ColorHistogram/>
<FaceLocations>
<FacePosition Y="379" X="205"/>
<FacePosition Y="366" X="372"/>
</FaceLocations>
</ImageMetadata>
我已經嘗試了不同的解決方案。起初,我只有叫BinValue,而不是導致該代碼標籤斌與屬性值的XElement:
//Yielding no results
from elements in doc.Descendants()
let element = elements.Element("BinValue")
select (long)element;
然後惹毛了在LINQ到XML後,我改變了結構有點我的文檔有一個標籤和一個屬性。但這沒有任何影響。
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#完成的。因此,我將創建兩個要點來分享我的代碼。請記住在您的解決方案中添加Emgu OpenCV塊體包。
**使用任何兩個地方的JPG文件,以運行F#代碼,將生成的元數據!
**如果可能的話,我想一個方法來檢索使用LINQ to XML數據。對於這兩種ColorHistogram和FaceLocations
UPDATE1
有人問我的意見,看看我的問題發生時的XML文件的狀態。您可以在下面找到它:
什麼'dbMetadata'的值發生錯誤時? – har07
@ har07 dbMetadata的狀態位於Metadata文件中。我做了一個更新我的帖子 –
它看起來像你只所示的XML文件的一部分。如果你提供[mcve],這將會有所幫助。這可能很容易歸因於根中的默認XML名稱空間。 (文件你聯繫,也許不是......但基本上有一個在這個問題太混亂 - 一個短的控制檯應用程序將使這更簡單的解決。)如果'dbMetadata'包含實際的XML –