看板 C_Sharp 關於我們 聯絡資訊
※ 引述《snk521 (哇哈哈)》之銘言: : 我知道使用SelectSingleNode方法可以找出相對應的節點,可是裡面填入的Xpath : 的表示方是一直不太清楚,下面是一個小小的例子: : <Type name="MM"> : <Book name="Ring"> : <Author name="Mary"> : <price>100</price> : </Author> : <Author name="Jack"> : <price>200</price> : </Author> : </Book> : <Book name="Road"> : <Author name="John"> : <price>300</price> : </Author> : <Author name="Juny"> : <price>400</price> : </Author> : </Book> : </Type> : 問題1.假設我要找出Book name="Ring"這個節點,Xpath該怎麼寫? node = objXmlDocument.SelectSingleNode("/Type/Book[@name='Ring']"); 1. 中括號內部寫明條件,本例是說 Book 元素有 name 屬性而且屬性值等於 Ring。 2. 要查屬性的話,請加上 @ at符號。 3. 字串值 Ring 用 ' 單引號包夾。 : 問題2.假設我要找出Author name="Mary"這個節點,Xpath又該怎麼寫? 如果按照字面意思: node = objXmlDocument.SelectSingleNode("/Type/Book/Author[@name='Mary']"); 如果要 Author name="Mary" 的那本書: node = objXmlDocument.SelectSingleNode("/Type/Book[Author[@name='Mary']]"); : 問題3.要是我想找出 <price>100的這個節點,Xpath又該怎麼找? node = objXmlDocument.SelectSingleNode("/Type/Book/Author[price=400]/price"); 或者: node = objXmlDocument.SelectSingleNode("/Type/Book/Author/price[.=400]"); ※ 編輯: TeemingVoid 來自: 111.252.127.171 (07/24 15:59)
TeemingVoid:對了,附帶一提,XML有分大小寫,所以,你那份XML文件 07/24 16:07
TeemingVoid:的 schema 如果是你可以作主的話,最好統一使用 07/24 16:08
TeemingVoid:Pascal命名法或者 camel 命名法,否則,一下子第一個 07/24 16:08
TeemingVoid:字母大寫,一下子又全小寫,很容易寫錯。 07/24 16:08
snk521:感謝T大熱心的回覆,順便問一下怎麼宣告XmlElement為陣列? 07/24 20:04
TeemingVoid:就跟一般陣列一樣啊!? 07/24 23:09
TeemingVoid:XmlElement[] Books = new XmlElement[size]; 07/24 23:09
TeemingVoid:只是XmlElement是用XmlDocument.CreateElement()建構 07/24 23:11