我在LINQ to XML http://www.dotnetcurry.com/showarticle.aspx?ID=564
上遵循了许多教程XML文档的术语令人困惑。 有人可以帮我写一下代码片段,它会根据条件从这个xml中提取“Name”值。
我需要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>
我正在尝试编写一些合理执行的数据访问代码,但荒谬的要求使其变得困难。非常感谢任何帮助。提前谢谢。
答案 0 :(得分:1)
使用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
答案 1 :(得分:0)
或使用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']")