需要从XML获取特定值

时间:2014-05-30 16:26:38

标签: c# xml vb.net linq

我在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>

我正在尝试编写一些合理执行的数据访问代码,但荒谬的要求使其变得困难。非常感谢任何帮助。提前谢谢。

2 个答案:

答案 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']")
相关问题