powered by simpleCommunicator - 2.0.50     © 2025 Programmizd 02
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / xpath для получения строки с разделителем из массивов
8 сообщений из 8, страница 1 из 1
xpath для получения строки с разделителем из массивов
    #38036278
4Kir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
<root>
  <items>
    <item>
       <items2>
           <item2>1</item2>
           <item2>2</item2>
       </items2>
    </item>
    <item>
       <items2>
           <item2>1</item2>
           <item2>2</item2>
       </items2>
    </item>
  </items>
</root>
...
Рейтинг: 0 / 0
xpath для получения строки с разделителем из массивов
    #38036288
4Kir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Сори. фигню написал первым постом. Не нашел кнопку "отредактировать".
это xml
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
<root>
  <items>
    <item>
       <items2>
           <item2>1</item2>
           <item2>2</item2>
       </items2>
    </item>
    <item>
       <items2>
           <item2>1</item2>
           <item2>2</item2>
       </items2>
    </item>
  </items>
</root>


вот код на c#
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
 XmlDocument doc = new XmlDocument();
            doc.Load(@"file.xml");

            XmlNamespaceManager nsmgr = new XmlNamespaceManager(doc.NameTable);
            
            var navigator = doc.CreateNavigator();
            var array = navigator.Select("//items2", nsmgr).Cast<object>().ToArray();

            foreach (var title in array)
            {
                Console.WriteLine(title);
            }



он вернет 2 строчки вида
12
12
Мне бы сделать так, чтобы он возвращал
1разделитель2
1разделитель2

так можно сделать?

Спасибо за внимание.
...
Рейтинг: 0 / 0
xpath для получения строки с разделителем из массивов
    #38036301
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: c#
1.
var array = navigator.Select("//items2/item2", nsmgr).Cast<object>().ToArray();
...
Рейтинг: 0 / 0
xpath для получения строки с разделителем из массивов
    #38036404
4Kir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
_Vasilisk_,

в этом случае вернется
1
2
1
2

А мне надо
1sep2
1sep2
...
Рейтинг: 0 / 0
xpath для получения строки с разделителем из массивов
    #38036423
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
4KirА мне надо
1sep2
1sep2Тогда это в форум по C#. Как из массива получить строку с разделителями
...
Рейтинг: 0 / 0
xpath для получения строки с разделителем из массивов
    #38036474
4Kir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
_Vasilisk_,

шпилька принимается.
мне надо получить xpath-ом массив, где индекс обозначает порядковый номер элемента в xml
а значения представляют элементы массива, записанные через разделитель.

я привел самый простой пример, который только смог придумать. Возможно я был не прав.
В массива items2 не обязательно будет ровно 2 элемента. их может быть как больше, так и меньше.

дело в том, что обработка 2 разных xml
где в первом массиве 3 элемента, во втором 2
и наоборот в первом 2, во втором 3
xpath выражением //items2/item2

могут вернуть абсолютно идентичные массивы.

мне же нужно получить будет разные строчки по идентичным массивам.

как это сделать средствами C# ума не приложу.

Спасибо
...
Рейтинг: 0 / 0
xpath для получения строки с разделителем из массивов
    #38036528
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
4Kirкак это сделать средствами C# ума не приложу.Я Вам намекнул, что C# тут могут не знать.

Алгоритм такой: Вам нужно сформировать массив узлов items. А потом для каждого элемента этого массива сформировать строку с разделителями и записать в другой массив. Как это сделать на C# понятия не имею
...
Рейтинг: 0 / 0
xpath для получения строки с разделителем из массивов
    #38036742
4Kir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
_Vasilisk_,

большое спасибо. Вот получилось написать то что мне нужно
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
var array = navigator.Select(xPath, nsmgr)
        .Cast<XPathNavigator>()
	.Select(item =>
		{
			string value = string
				.Join("sep", item.SelectChildren("", nsmgr.DefaultNamespace)
				.Cast<object>()
				.ToArray());
			if (string.IsNullOrWhiteSpace(value))
			{
				return item.Value;
			}
			return value;
		})
	.ToList();



Код, в случае если xPath - возвращает массив массивов - получает массив, где значения состоят из элементов массивов разделенные сепараторами

Если xPath возвращает массив простых значений - возвращает массив простых значений.
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / xpath для получения строки с разделителем из массивов
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]