Аватар для Egor.S
215 / 180 / 79
Регистрация: 02.10.2011
Сообщений: 651

Выборка XPath: сумма полей в ряду

22.12.2014, 20:19. Показов 1607. Ответов 14
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
XML
1
2
3
4
5
<Табл>
<Ряд полераз="1" поледва="2"></Ряд>
<Ряд полераз="1"></Ряд>
<Ряд поледва="2"></Ряд>
</Табл>
В хмл встречается вот такой участок, рядов может быть сколько угодно много, поля не обязательны.
Но мне нужно посчитать сумму полей в ряде, если они оба присутствуют, как это сделать?
Если селектом выбирать сразу все поля, и если одно из полей в ряду не присутствует, то ничего не приходит, даже null.


Подозреваю, что как-то так
C#
1
var rows = nav.Select("/ТаблСчФакт/Ряд/)
И потом c помощью foreach перебирать и выбирать нужные значение, только как это сделать?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
22.12.2014, 20:19
Ответы с готовыми решениями:

XPath выборка и массивы
Доброго времени суток. Столкнулся с такой проблемкой: Существует xml файл вида: &lt;ItemBase&gt; &lt;Items Level=&quot;%Level%&quot;...

Нужно чтоб текст который вводится появлялся в 15 ряду и начал двигаться по горизонтали пока не появится в 16 ряду в начале
Нужно чтоб текст который вводится появлялся в 15 ряду и начал двигаться по горизонтали пока не появится в 16 ряду в начале , очень прошу...

Выборка названий полей
Добрый вечер! Есть код: $query_table=$mysqli-&gt;query(&quot;SHOW COLUMNS FROM `users`&quot;); $array_table=$query_table-&gt;fetch_assoc(); ...

14
foo();
 Аватар для rattrapper
886 / 587 / 222
Регистрация: 03.07.2013
Сообщений: 1,549
Записей в блоге: 2
22.12.2014, 20:51
Egor.S,
Code
1
sum(//Табл/Ряд[@полераз and @поледва]/attribute::*)
Добавлено через 4 минуты
ой. так вообще можно:
Code
1
sum(//Табл/Ряд[@полераз and @поледва]/@*)
Добавлено через 1 минуту
и тестер еще пригодится
2
 Аватар для Egor.S
215 / 180 / 79
Регистрация: 02.10.2011
Сообщений: 651
22.12.2014, 21:06  [ТС]
rattrapper, а можно как-нибудь получить две коллекции, первая [1,1,2] вторая [2,null,null]
0
foo();
 Аватар для rattrapper
886 / 587 / 222
Регистрация: 03.07.2013
Сообщений: 1,549
Записей в блоге: 2
22.12.2014, 21:15
Egor.S, а разве не должно быть [1, 1, null]; [2, null, 2]?
1
 Аватар для Egor.S
215 / 180 / 79
Регистрация: 02.10.2011
Сообщений: 651
22.12.2014, 21:26  [ТС]
rattrapper, дада, имеено, прошу прощения.
0
foo();
 Аватар для rattrapper
886 / 587 / 222
Регистрация: 03.07.2013
Сообщений: 1,549
Записей в блоге: 2
22.12.2014, 21:30
Egor.S, честно говоря, в таком виде не представляю как это сделать через XPath. Зато, это будет несложно реализовать в коде. Возможно, если вы уточните задание (для чего нужны эти массивы), получится еще что-то придумать
1
 Аватар для Egor.S
215 / 180 / 79
Регистрация: 02.10.2011
Сообщений: 651
22.12.2014, 21:35  [ТС]
rattrapper, вот у меня много таких "рядов" и нужно посчитать сумму, если существует поле 1 и поле 2. Далее сложить все эти суммы и сравнить с неким числом, которое заранее известно.
0
foo();
 Аватар для rattrapper
886 / 587 / 222
Регистрация: 03.07.2013
Сообщений: 1,549
Записей в блоге: 2
22.12.2014, 21:41
Цитата Сообщение от Egor.S Посмотреть сообщение
нужно посчитать сумму
сумму чего?

Добавлено через 1 минуту
вот код для получения столбика
C#
1
2
3
4
5
6
7
8
9
10
var xml = @"<Table>
<Row field1=""1"" field2=""2""></Ряд>
<Row field1=""1""></Ряд>
<Row field2=""2""></Ряд>
</Table>";
XDocument doc = XDocument.Parse(xml);
int?[] col1 = doc.Element("Table").Elements("Row")
     .Select(r => r.Attribute("field1"))
     .Select(a => a != null ? (int?) int.Parse(a.Value) : null)
     .ToArray();
1
 Аватар для Egor.S
215 / 180 / 79
Регистрация: 02.10.2011
Сообщений: 651
22.12.2014, 21:42  [ТС]
rattrapper, сумму полей в ряде
0
foo();
 Аватар для rattrapper
886 / 587 / 222
Регистрация: 03.07.2013
Сообщений: 1,549
Записей в блоге: 2
22.12.2014, 21:49
Egor.S, так все получается, смотрите:
XML
1
2
3
4
5
6
<Table>
    <Row field1="1" field2="2"></Row>
    <Row field1="16"></Row>
    <Row field1="4" field2="8"></Row>
    <Row field2="32"></Row>
</Table>
на запрос XPath : sum(//Table/Row[@field1 and @field2]/@*) выдает ответ: 15
Разве это не то, что нужно???
1
 Аватар для Egor.S
215 / 180 / 79
Регистрация: 02.10.2011
Сообщений: 651
22.12.2014, 22:16  [ТС]
rattrapper, а как такой sum(//Table/Row[@field1 and @field2]/@*) запрос применить в C# коде?
0
foo();
 Аватар для rattrapper
886 / 587 / 222
Регистрация: 03.07.2013
Сообщений: 1,549
Записей в блоге: 2
22.12.2014, 22:41
Egor.S,
C#
1
2
3
4
5
6
7
8
9
var xml = @"<Table>
<Row field1=""1"" field2=""2""></Row>
<Row field1=""16""></Row>
<Row field1=""4"" field2=""8""></Row>
<Row field2=""32""></Row>
</Table>";
var query = @"sum(//Table/Row[@field1 and @field2]/@*)";
XDocument doc = XDocument.Parse(xml);
Console.WriteLine(doc.CreateNavigator().Evaluate(query));
1
 Аватар для Egor.S
215 / 180 / 79
Регистрация: 02.10.2011
Сообщений: 651
23.12.2014, 15:00  [ТС]
XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
<?xml version="1.0" encoding="UTF-8"?>
<Файл xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" ИдФайл="ON_SFAKT_2TS85ae8ea5-e993-4627-95c4-839b926c6591_2TS42EF884D-EEE6-4973-A90A-063EC419C6A7_20141210_3f71cf69-5541-4162-b4fa-bac5639677ca" ВерсПрог="1.0" ВерсФорм="5.21">
   <СвУчДокОбор ИдОтпр="2TS42EF884D-EEE6-4973-A90A-063EC419C6A7" ИдПок="2TS85ae8ea5-e993-4627-95c4-839b926c6591">
      <СвОЭДОтпр НаимОрг="synerdocs" ИННЮЛ="7728075928" ИдЭДО="2TS" />
   </СвУчДокОбор>
   <Документ КНД="1115101">
      <СвСчФакт НомерСчФ="123" ДатаСчФ="10.12.2014" КодОКВ="643">
         <СвПрод>
            <ИдСв>
               <СвФЛ ИННФЛ="263506295502">
                  <ФИОИП Фамилия="Пупкин" Имя="Василий" Отчество="Рафикович" />
               </СвФЛ>
            </ИдСв>
            <Адрес>
               <АдрРФ КодРегион="18" Город="пва" />
            </Адрес>
         </СвПрод>
         <ГрузОт>
            <ОнЖе>он же</ОнЖе>
         </ГрузОт>
         <СвПокуп>
            <ИдСв>
               <СвФЛ ИННФЛ="183505680965">
                  <ФИОИП Фамилия="Щепина" Имя="Анастасия" Отчество="Васильевна" />
               </СвФЛ>
            </ИдСв>
            <Адрес>
               <АдрРФ Индекс="426000" КодРегион="18" Город="г.Ижевск" Улица="ул. К.Маркса. дом 2" />
            </Адрес>
         </СвПокуп>
      </СвСчФакт>
      <ТаблСчФакт>
         <СведТов НомСтр="1" НаимТов="test" ОКЕИ_Тов="796" КолТов="0" ЦенаТов="0" СтТовБезНДС="0" СтТовУчНал="0">
            <Акциз СумАкциз="без акциза" />
            <НалСт НалСтВел="18" НалСтТип="процент" />
            <СумНал СумНДС="-" />
            <КодПроисх>643</КодПроисх>
         </СведТов>
         <ВсегоОпл СтТовБезНДСВсего="0.00" СтТовУчНалВсего="0.00">
            <СумНалВсего СумНДС="без НДС" />
         </ВсегоОпл>
      </ТаблСчФакт>
      <Подписант>
         <ИП ИННФЛ="263506295502" СвГосРегИП="...some words here... and №um83r5">
            <ФИО Фамилия="Иванов" Имя="Иван" Отчество="Васильевич" />
         </ИП>
      </Подписант>
   </Документ>
</Файл>
XML
1
 var a = nav.Evaluate(@"sum(/Файл/Документ/ТаблСчФакт/СведТов[@ЦенаТов and @КолТов]/@*)");
Почему NaN приходит?

Добавлено через 5 часов 52 минуты
и если произведение нужно или деление ?
0
Заблокирован
23.12.2014, 15:21
Egor.S, а вам XPath обязательно использовать? Может обычные методы linq2xml тоже подойдут?
0
 Аватар для Egor.S
215 / 180 / 79
Регистрация: 02.10.2011
Сообщений: 651
23.12.2014, 15:26  [ТС]
Ev_Hyper, я разобрался

C#
1
2
3
4
5
6
7
8
 var c = xml.SelectNodes("/Файл/Документ/ТаблСчФакт/СведТов");
 
 
            foreach (XmlNode pr in c)
            {
                var a = pr.Attributes["КолТов"];
                var b = pr.Attributes["ЦенаТов"];
            }
Как-то так
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
23.12.2014, 15:26
Помогаю со студенческими работами здесь

Выборка полей из базы
Здраствуйте. Возник такой вопрос как выбрать из базы N полей выбранных абсолютно случайным образом. этот запрос должен быть...

Выборка не повторяющихся полей
всем привет,нужна ваша помощь: есть такой запрос Select t1.per_saldo_flat_id, t1.lc_id, t1.date_id , t1.sal_begin, t1.sal_benefit,...

Выборка полей из DataSet
Как из DataSet выбрать только определенное количество полей и использовать их как ItemSource для DataGrid? DataGrid.ItemSource =...

Выборка одинаковы полей
Добрый день, столкнулся с проблемой: нужно выбрать строки с одинаковыми значениями в двух полях. В Oracle это можно сделать так: ...

Выборка пустых полей
Доброго времени суток!! Имеется база(см. вложения) И есть запрос: SELECT Ремонт.Код, Ремонт., Клиенты.Фамилия, Клиенты.,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Опции темы

Новые блоги и статьи
Валидация и контроль данных табличной части документа перед записью
Maks 22.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в КА2. Задача: контроль и валидация данных табличной части документа перед записью с учетом регламента компании. . .
Отчёт о затраченных материалах за определенный период с макетом печатной формы
Maks 21.04.2026
Отчёт из решения ниже размещён в конфигурации КА2. Задача: разработка отчёта по затраченным материалам за определённый период, с возможностью вывода печатной формы отчёта с шапкой и подвалом. В. . .
Отчёт о спецтехнике находящейся в ремонте
Maks 20.04.2026
Отчёт из решения ниже размещен в конфигурации КА2. Задача: отобразить спецтехнику, которая на данный момент находится в ремонте. Есть нетиповой документ "Заявка на ремонт спецтехники" который. . .
Памятка для бота и "визитка" для читателей "Semantic Universe Layer (Слой семантической вселенной)"
Hrethgir 19.04.2026
Сгенерировано для краткого описания по случаю сборки и компиляции скелета серверного приложения. И пусть после этого скажут, что статьи сгенерированные AI - туфта и не интересно. И это не реклама -. . .
Запрет удаления строк ТЧ документа при определённом условии
Maks 19.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "Аккумуляторы", разработанного в конфигурации КА2. У данного документа есть ТЧ, в которой в зависимости от прав доступа. . .
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут Суть: - Группа наркоманов из 10 человек. - Только один инфицирован ВИЧ. - Колются одной иглой. - Колются раз в день. - Колются последовательно через. . .
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru