需要从XML中获取特定的值
本文关键字:获取 XML | 更新日期: 2023-09-27 18:05:52
我在这里学习了很多关于LINQ to XML的教程http://www.dotnetcurry.com/showarticle.aspx?ID=564
XML文档的术语令人困惑。有人可以帮我写代码片段,将提取"名称"值从这个xml基于一个条件,例如。
我需要colSDate和colAcqDate,因为Visible是True,而不是colSeqNo,因为它没有Visible属性或它被设置为False。
<XtraSerializer version="1.0" application="View">
<property name="#LayoutVersion" />
<property name="ActiveFilterEnabled">true</property>
<property name="Columns" iskey="true" value="286">
<property name="Item1" isnull="true" iskey="true">
<property name="Name">colSeqNo</property>
</property>
<property name="Item2" isnull="true" iskey="true">
<property name="Visible">true</property>
<property name="VisibleIndex">0</property>
<property name="Name">colSDate</property>
</property>
<property name="Item3" isnull="true" iskey="true">
<property name="Visible">true</property>
<property name="VisibleIndex">1</property>
<property name="Name">colAcqDate</property>
</property>
</property>
<property name="ActiveFilterString" />
<property name="GroupSummarySortInfoState" />
<property name="FindFilterText" />
<property name="FindPanelVisible">false</property>
</XtraSerializer>
我正试图写一些合理执行的数据访问代码,但荒谬的要求使它变得困难。非常感谢任何帮助。
这里有一种方法,使用LINQ to XML:
Dim result = From d In xml.Descendants("property")
Where d.Attribute("name").Value = "Visible" AndAlso
d.Value = "true"
From e As XElement In d.Parent.Elements
Where e.Attribute("name").Value = "Name"
Select e.Value
或者使用XPath
(不确定你是想要vb还是c#代码,没有很大的区别):
Dim x As XmlNodeList = ' ... pardon the break here, want to get it all in window.
d.SelectNodes(".//property[@name='Visible'][.='true']/../property[@name='Name']")