這是一個簡化的 mxl 結構“xml”,<store><book_1> <author_1><name>Alice</name><age>30</age></author_1> <author_2><name>Bob</name><age>31</age></author_2><book_1> <author_1><name>Charley</name><age>29</age></author_1> <author_2><name>Dory</name><age>25</age></author_2> <book_1> </store>這是我嘗試過的; XmlDocument submission = new XmlDocument(); submission.LoadXml(xml); var bookNodes = submission.SelectNodes("//*[starts-with(local-name(),'book_')]");這給了我一個書單。 foreach (XmlNode book in bookNodes) { //I want to do something like to find book authors for the book in context e.g. for the first book I just want nodes for Alice and Bob. // var bookAuthors = book.SelectNodes("decendants::[starts-with(local-name(),'author_')"); }我怎么能做一個開始來檢查下流元素?編輯:似乎是一個錯字......var bookAuthors = book.SelectNodes("后代::*[starts-with(local-name(),'MeritCriterion_') ] ");
1 回答

不負相思意
TA貢獻1777條經驗 獲得超10個贊
您可以使用以下 XPath 語法訪問您的后代節點:
XmlDocument submission = new XmlDocument();
submission.LoadXml(xml);
var bookNodes = submission.SelectNodes("//*[starts-with(local-name(),'book_')]");
foreach (XmlNode book in bookNodes)
{
var author = book.SelectNodes("descendant::*[starts-with(local-name(),'author_')]");
foreach (XmlNode authorInfo in author)
{
Console.WriteLine(authorInfo .InnerText);
}
}
簡而言之,您需要訪問descendant::(all)[starts-with],否則您只是想訪問 XPath 中的任何后代。:)
- 1 回答
- 0 關注
- 162 瀏覽
添加回答
舉報
0/150
提交
取消