環境選擇基於最大子元素值的多個節點:如何的XPath 1.0(C#,WPF)
- 使用C#(和Visual Studio 2015年)
- 僅限於使用XPath編寫WPF應用程序1.0
目標:我需要基於特定節點
現狀到目前爲止內的一個子元素的值從XML文檔選擇多個特定的XML節點:目前,我有幾個XPath查詢選擇單個節點並獲取屬性和元素的值。下面顯示了我遇到的問題。
var xUsageSummary = xDoc.XPathSelectElements("
/root
/table[not(contains(@tagname,'pole'))]
/*[not(maximum_usage < ../*/maximum_usage)]");
編輯以示修改table
和更新maximum_usage
看來這個問題是從XPath字符串的最後一節的到來,在../*/maximum_usage
。雖然被選中的元素被not(contains(@tagname,'pole'))
謂詞過濾,但我認爲../*/maximum_usage
沒有根據過濾器獲取正確的數據。也許*
應該替換爲表示要從中獲取值的元素的名稱。
<root>
<table tagname="summary_of_brace_usages">
<summary_of_brace_usages>
<brace_label>brace1</brace_label>
<maximum_usage>55.00</maximum_usage>
<load_case>CaseA</load_case>
</summary_of_brace_usages>
<summary_of_brace_usages>
<brace_label>brace2</brace_label>
<maximum_usage>70.00</maximum_usage>
<load_case>CaseA</load_case>
</summary_of_brace_usages>
</table>
<table tagname="summary_of_pole_usages">
<summary_of_pole_usages>
<pole_label>pole1</pole_label>
<maximum_usage>23.63<maximum_usage>
<load_case>CaseB<load_case>
</summary_of_pole_usages>
<summary_of_pole_usages>
<pole_label>pole1</pole_label>
<maximum_usage>85.25<maximum_usage>
<load_case>CaseB<load_case>
</summary_of_pole_usages>
</table>
<table tagname="summary_of_x_arm_usages">
<summary_of_x_arm_usages>
<brace_label>xarm1</brace_label>
<maximum_usage>42.00</maximum_usage>
<load_case>CaseA</load_case>
</summary_of_x_arm_usages>
<summary_of_x_arm_usages>
<brace_label>xarmA</brace_label>
<maximum_usage>95.00</maximum_usage>
<load_case>CaseA</load_case>
</summary_of_x_arm_usages>
</table>
</root>
被修改以顯示改性樣品XML
從XML樣本所需的輸出以上應該是一個包含兩個XElements一個IEnumerable;
/root/table/summary_of_brace_usages //(where @maximum_usage 70, because it is the largest "maximum_usage" value)
和
/root/table/summary_of_x_arm_usages //(where @maximum_usage is 95, because it is the largest "maximum_usage" value)
返回正確的IEnumerable後,我將能夠得到其他元素的值,並將其寫入到變量和最終類的屬性,使他們能夠投入使用我的WPF應用程序進行打印的FlowDocument。
任何幫助非常感謝,我會很樂意提供任何額外的信息,如果需要的話 - 預先感謝您!
謝謝你提供有用的建議。我改變了一切,以反映你的答案,它現在實際上正在返回一些東西,所以這很好。不幸的是,我似乎簡化了我的示例代碼,以至於忽略了一個重要因素。我會更新我的原始帖子以顯示更改。 –