Re: [問題] XML節點搜尋問題

看板C_Sharp (C#)作者 (TeemingVoid)時間12年前 (2013/07/24 15:38), 編輯推噓1(107)
留言8則, 2人參與, 最新討論串2/2 (看更多)
※ 引述《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)

07/24 16:07, , 1F
對了,附帶一提,XML有分大小寫,所以,你那份XML文件
07/24 16:07, 1F

07/24 16:08, , 2F
的 schema 如果是你可以作主的話,最好統一使用
07/24 16:08, 2F

07/24 16:08, , 3F
Pascal命名法或者 camel 命名法,否則,一下子第一個
07/24 16:08, 3F

07/24 16:08, , 4F
字母大寫,一下子又全小寫,很容易寫錯。
07/24 16:08, 4F

07/24 20:04, , 5F
感謝T大熱心的回覆,順便問一下怎麼宣告XmlElement為陣列?
07/24 20:04, 5F

07/24 23:09, , 6F
就跟一般陣列一樣啊!?
07/24 23:09, 6F

07/24 23:09, , 7F
XmlElement[] Books = new XmlElement[size];
07/24 23:09, 7F

07/24 23:11, , 8F
只是XmlElement是用XmlDocument.CreateElement()建構
07/24 23:11, 8F
文章代碼(AID): #1HxuHq8z (C_Sharp)
文章代碼(AID): #1HxuHq8z (C_Sharp)