Linq To XML:获得该结点的所有祖先结点,也可以说父结点吧

XElement firstParticipant; // A full document with all the bells and whistles. XDocument xDocument = new XDocument( new XDeclaration("1.0", "UTF-8", "yes"), new XDocumentType("BookParticipants", null, "BookParticipants.dtd", null), new XProcessingInstruction("BookCataloger", "out-of-print"), // Notice on the next line that we are saving off a reference to the first // BookParticipant element. new XElement("BookParticipants", firstParticipant = new XElement("BookParticipant", new XComment("This is a new author."), new XProcessingInstruction("AuthorHandler", "new"), new XAttribute("type", "Author"), new XElement("FirstName", new XText("Joe"), new XElement("NickName", "Joey")), new XElement("LastName", "Rattz")), new XElement("BookParticipant", new XAttribute("type", "Editor"), new XElement("FirstName", "Ewan"), new XElement("LastName", "Buckingham")))); foreach (XElement element in firstParticipant. Element("FirstName").Element("NickName").Ancestors()) { Console.WriteLine(element.Name); }

输出

FirstName BookParticipant BookParticipants

注意这个方法

foreach (XElement element in firstParticipant.

Element("FirstName").Element("NickName").Ancestors())

打印出的顺序是由里层父结点向外层父结点

如果打印结果要包含自身结点那么就这么写

foreach (XElement element in firstParticipant.

Element("FirstName").Element("NickName").AncestorsAndSelf())

{

Console.WriteLine(element.Name);

}

打印结果是这样

NickName

FirstName

BookParticipant

BookParticipants

那么以上递归父结点的方法都是由里层向外层显示,还有个方法是把递归顺序倒过来

把上面那个循环的代码改成这样

foreach (XElement element in firstParticipant.Descendants())

那么打印结果就是从外层到里层显示

FirstName

NickName

LastName

相应的,它也有打印息自身的方法,命名差不多,也是XXXXSelf

foreach (XElement element in firstParticipant.DescendantsAndSelf())


打印结果

BookParticipant

FirstName

NickName

LastName

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值