需要从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>

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

需要从XML中获取特定的值

这里有一种方法,使用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']")
相关文章: