Получение фильтрации раздела к атрибуту xml - PullRequest
2 голосов
/ 28 марта 2012

Я хочу выбрать блок раздела SMS согласно tip атрибуту SMS xml. В настоящее время: 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 голосов
/ 05 июня 2012

Вы, вероятно, уже давно перешли, но я создал поиск XPath для xml XElement, недавно доступный здесь: 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 и т. Д. Я также считаю, что это проще для инъекций переменных вместо "//Sms[@tip='" + variable + "']". XPathElement просто XPath().FirstOrDefault() возвращает один элемент.

...