Парсинг xml на кириллице



  • Пытаюсь спарсить xml файл выгрузки с 1с. Получаю xml файл вот такого вида

    <Товары>
    	<Товар>
    		<Ид>5f256ac4-809e-11ea-8dc2-d4bed9a50ad4</Ид>
    		<Код>НФ-00005176</Код>
    		<Наименование>Атлантида 2</Наименование>
    		<Описание>Современная гостиная "Атлантида 2" - многофункциональна. Узкие шкафчики со стеклянными дверцами послужат в качестве витрин для предметов интерьера. Зеркала на боковых модулях добавляют помещению глубины</Описание>
    		<Картинка>import_files/5f/5f256ac4809e11ea8dc2d4bed9a50ad4_a81f91e180a811ea8dc2d4bed9a50ad4.jpg</Картинка>
    		<Картинка>import_files/5f/5f256ac4809e11ea8dc2d4bed9a50ad4_a81f91e380a811ea8dc2d4bed9a50ad4.jpg</Картинка>
    		<Картинка>import_files/5f/5f256ac4809e11ea8dc2d4bed9a50ad4_a81f91e280a811ea8dc2d4bed9a50ad4.jpg</Картинка>
    	</Товар>
    	<Товар>
    		<Ид>5f256ac5-809e-11ea-8dc2-d4bed9a50ad4</Ид>
    		<Артикул/>
    		<Код>НФ-00005177</Код>
    		<Наименование>Атлантида 3</Наименование>
    		<Описание>Стенка для интерьера в классическом стиле в духе минимализма "Атлантида 3", с удачным подбором цветовых решений. "Атлантида-3" сэкономит максимум полезного пространства в небольшой гостиной.</Описание>
    		<Картинка>import_files/5f/5f256ac5809e11ea8dc2d4bed9a50ad4_a81f91e480a811ea8dc2d4bed9a50ad4.jpg</Картинка>
    		<Картинка>import_files/5f/5f256ac5809e11ea8dc2d4bed9a50ad4_a81f91e680a811ea8dc2d4bed9a50ad4.jpg</Картинка>
    		<Картинка>import_files/5f/5f256ac5809e11ea8dc2d4bed9a50ad4_a81f91e580a811ea8dc2d4bed9a50ad4.jpg</Картинка>
    	</Товар>
    </Товары>
    

    Возможно ли парсить сразу в кирилице запросом

    Path //Товары/Товар
    

    или только с предварительной заменой тегов в латиницу?



  • @Simon said in Парсинг xml на кириллице:

    Пытаюсь спарсить xml файл выгрузки с 1с. Получаю xml файл вот такого вида

    <Товары>
    	<Товар>
    		<Ид>5f256ac4-809e-11ea-8dc2-d4bed9a50ad4</Ид>
    		<Код>НФ-00005176</Код>
    		<Наименование>Атлантида 2</Наименование>
    		<Описание>Современная гостиная "Атлантида 2" - многофункциональна. Узкие шкафчики со стеклянными дверцами послужат в качестве витрин для предметов интерьера. Зеркала на боковых модулях добавляют помещению глубины</Описание>
    		<Картинка>import_files/5f/5f256ac4809e11ea8dc2d4bed9a50ad4_a81f91e180a811ea8dc2d4bed9a50ad4.jpg</Картинка>
    		<Картинка>import_files/5f/5f256ac4809e11ea8dc2d4bed9a50ad4_a81f91e380a811ea8dc2d4bed9a50ad4.jpg</Картинка>
    		<Картинка>import_files/5f/5f256ac4809e11ea8dc2d4bed9a50ad4_a81f91e280a811ea8dc2d4bed9a50ad4.jpg</Картинка>
    	</Товар>
    	<Товар>
    		<Ид>5f256ac5-809e-11ea-8dc2-d4bed9a50ad4</Ид>
    		<Артикул/>
    		<Код>НФ-00005177</Код>
    		<Наименование>Атлантида 3</Наименование>
    		<Описание>Стенка для интерьера в классическом стиле в духе минимализма "Атлантида 3", с удачным подбором цветовых решений. "Атлантида-3" сэкономит максимум полезного пространства в небольшой гостиной.</Описание>
    		<Картинка>import_files/5f/5f256ac5809e11ea8dc2d4bed9a50ad4_a81f91e480a811ea8dc2d4bed9a50ad4.jpg</Картинка>
    		<Картинка>import_files/5f/5f256ac5809e11ea8dc2d4bed9a50ad4_a81f91e680a811ea8dc2d4bed9a50ad4.jpg</Картинка>
    		<Картинка>import_files/5f/5f256ac5809e11ea8dc2d4bed9a50ad4_a81f91e580a811ea8dc2d4bed9a50ad4.jpg</Картинка>
    	</Товар>
    </Товары>
    

    Возможно ли парсить сразу в кирилице запросом

    Path //Товары/Товар
    

    или только с предварительной заменой тегов в латиницу?

    Быстрее было проверить, чем создавать пост

    0a31b1e3-e320-4e63-a5ba-300f098a6c4e-изображение.png

    540f8497-45b8-42e7-b58a-07484ebb5fa1-изображение.png

    Можно быстро теги заменить транслитом через .replace()

    [[RESULT]] = [[TEMPLATE_RESULT]].replace(/(<\/?)(.*?)>/g, function (p1,p2,p3) {return p2 + translit(p3) + ">"})
    

    тогда можно будет использовать xpath
    0f0022e4-20e0-4d4a-97ad-b36c295f53c1-изображение.png

    Тестовый скрипт



  • @Simon В БАС xpath действительно не дружит с кириллицей, как вариант к способу выше загружать этот xml в браузере БАС и в нем через получить текст парсить



  • @Fox
    TEMPLATE_RESULT]].replace(/(</?)(.*?)>/g, function (p1,p2,p3) {return p2 + translit(p3) + ">"})

    это регулярное выражение? Где можно об этом почитать?

    Спасибо за советы. С заменой все работает



  • @Simon "replace" это функция java script, а "translit" это встроенная функция БАС.


Log in to reply