Метод добавления выражений Xpath - PullRequest
0 голосов
/ 28 июля 2011

Я пытаюсь выполнить сортировку добавления для файла XML для системы документов, включая запись с измененной датой.

В основном у меня есть сетка для отображения XML всего списка документов, и я запускаю addort для данных непосредственно перед отображением.

Каждый файл имеет тег с истинным или ложным значением, а затем с опубликованной датой (это полные документы и поэтому не нуждаются в изменении), когда документ был изменен, тег изменяется на true, после его завершения он становится с учетом опубликованной даты на теге.

Чтобы иметь правильный порядок для того, что нужно клиенту, это Модифицированные -> Единицы с измененной датой -> Те, у которых есть ложный измененный тег.

В настоящее время у меня есть сортировка по названию:

* * 1010

XML выглядит следующим образом:

    <result>
       <document>
          <title>Title</title>
          <otherstuff />
          <modified>[true/false]<modified> #those with true first before false
          <publishdate /> #if not got a publish date
          <publishdate>2009-10-16</publishDate>
       </document>
    </result>

Итак, мне нужен следующий порядок:

     <result>
       <document>
          <title>Title1</title>
          <otherstuff />
          <modified>true<modified>
          <publishdate />
       </document>
       <document>
          <title>Title4</title>
          <otherstuff />
          <modified>true<modified>
          <publishdate>2010-11-27</publishDate>
       </document>
       <document>
          <title>Title2</title>
          <otherstuff />
          <modified>true<modified>
          <publishdate>2009-10-16</publishDate>
       </document>
       <document>
          <title>Title3</title>
          <otherstuff />
          <modified>false<modified>
          <publishdate />
       </document>
    </result>

Спасибо за любую помощь, которую вы можете оказать

Ответы [ 2 ]

0 голосов
/ 12 августа 2011

Я сам исправил это (я не мог заставить kirills компилироваться, он жаловался, что нет метода concat)

Был способ использовать xpath select для разделения всех различных типовэлемента, а затем сортировать каждого из них по отдельности, прежде чем итерировать их, как если бы они были одним элементом, работал для меня

0 голосов
/ 28 июля 2011

Попробуйте это:

var navigator = doc.CreateNavigator();
var subselectTrueExpression = navigator
    .Compile(@"//document[normalize-space(modified) = 'true']");
var subselectFalseExpression = navigator
    .Compile(@"//document[normalize-space(modified) = 'false']");

var nodes = navigator.Select(subselectTrueExpression).Cast<XPathNavigator>()
    .Concat(
        navigator.Select(subselectFalseExpression).Cast<XPathNavigator>()
    );
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...