这是一个简化的 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 关注
- 124 浏览
添加回答
举报
0/150
提交
取消