XmlNodeList changeValues = doc。 SelectNodes("//x:Textbox[contains(@Name, 'Report_')]//x:Value", xmlnsManager)。)
*編輯 假設我的XML檔案的一個部分看起來像這樣:
<Textbox Name="Report_Banana" >
<TextRun>/span>
<Value>Banana</Value>/span>
</TextRun>/span>
<TextRun>/span>
<Value>Other thing</Value>/span>
</TextRun>/span>
</Textbox>/span>
<Textbox Name="Report_Apple"/span>>
<TextRun>/span>
<Value>Apple</Value>/span>
</TextRun>/span>
<TextRun>/span>
<Value>Other thing</Value>/span>
</TextRun>/span>
</Textbox>/span>
我想只將每個文本框中的第一個值添加到我的串列中。 所以我的串列將包含Banana和Apple,而不是其他東西。
我怎樣才能編輯我的 Xpath 來做到這一點?到目前為止,Xpath 是有效的,但是它仍然在接收其他事物的值。
我需要使用X:,因為我在根中使用了一個命名空間。
我已經嘗試了:
我已經嘗試了:
XmlNodeList changeValues = doc。 SelectNodes("//x:Textbox[contains(@Name, 'Report_')]//x:Value"[1], xmlnsManager)。)
但是它仍然拾取了不需要的值。
。提前感謝!
uj5u.com熱心網友回復:
你的整個XML是無效的,因為屬性值沒有被參考。 所以,你的XML應該是
<Textbox Name="Report_Banana" >
<Value>Banana</Value>/span>
<Value>/span>Other thing</Value
</Textbox>其他事物</Value
<Textbox Name="Report_Apple"/span>>
<Value>Apple</Value>/span>
<Value>/span>Other thing</Value
</Textbox>其他事物</Value
然后,你的XPath-1.0可能是
/Textbox[contains(@Name, 'Report_')]/Value[1]
這將選擇Textbox元素的第一個Value子。
隨著x:命名空間的給出,它可以看起來像
//x: Textbox[contains(@Name, 'Report_')]/x: Value[1]
而與命名空間無關的版本是
//*[local-name()="Textbox" and contains(@Name, 'Report_')]/*[local-name()="Value"] [1]
所有三個XPath運算式都應該產生相同的節點集;當然,這取決于背景關系。
uj5u.com熱心網友回復:
假設你有一個根元素(而不是像OP中顯示的多個根Textbox),你可以使用下面的方法來獲得每個TextBox的第一個Value
//Textbox[contains(@Name, 'Report_')]/Value[1]/span>
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/331589.html
標籤:
