获取部分过滤到xml属性

时间:2012-03-28 12:16:13

标签: c# xml configurationsection

我想根据SMS xml的tip属性选择SMS部分块。 目前:ConfigurationManager.GetSection("Logger/Sms")有效但有没有办法获得ConfigurationManager.GetSection("Logger/Sms[@tip='VF']")等部分?

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <configSections>
    <sectionGroup name="Logger">
      <section name="Sms" type="caSectionTest.LogHandler, caSectionTest, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
    </sectionGroup>
  </configSections>

  <Logger>
    <Sms tip="Clickatell">
      <icerik>Soğuk zincir uygulamasından gönderilen sms</icerik>
      <telNo>9053123123123</telNo>
      <api>3363050</api>
      <user>pkUser</user>
      <pass>passhm</pass>
    </Sms>
    <Sms tip="Vodafone">
      <icerik>write something into sms</icerik>
      <telNo>905123123123</telNo>
      <originator>336123</originator>
      <user>ctUser</user>
      <pass>9Mdfpass</pass>
    </Sms>
  </Logger>
</configuration>

1 个答案:

答案 0 :(得分:0)

你可能已经很久了,但是我最近在这里创建了一个xml XElement的XPath查找:https://github.com/ChuckSavage/XmlLib/如果你想使用jsobo的注释来获取你想要的信息。

您可以使用它:

XElement root = XElement.Load(file);
XElement sms = root.XPathElement("//Sms[@tip={0}]", "VF"); // or "//Sms[@tip='VF']"

通过将其与string.Format()语法一起使用,您也可以将类型传递给XPath,如果您想进行DateTime检查等。我也发现变量注入也更容易,而不是{{ 1}}。 XPathElement只是"//Sms[@tip='" + variable + "']"才能返回单个元素。