Удаление тегов из XML-документа, удаление разрывов строк и добавление пользовательских разрывов строк

Я делаю запрос к веб-службе xml и получаю ответ. Этот ответ, являющийся потоком, затем сохраняется в строке. Проблема в том, что ответ заполнен тегами, CDATA и т. д. (Как и следовало ожидать). Как и следовало ожидать, разрыва строки также нет.

Я хочу взять эту строку, представляющую XML-документ, и удалить из нее все его теги, но сохранить фактические значения, а также убедиться, что каждая запись находится в одной строке, поэтому:

<Record>
  <name>adam</name>
  <telephoneno>000</telephonenumber>
</Record>
<Record>
  <name>mike</name>
  <telephoneno>001</telephonenumber>
</Record>

Преобразуется в:

adam 000
mike 001

Заголовки - это простая проблема, но как я могу этого добиться? Я пробовал таблицы данных и наборы данных, но не думаю, что они имеют большую поддержку для достижения того, что я пытаюсь сделать.

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
2
0
1 922
2

Ответы 2

Именно для этого и нужен XSLT! Он преобразует файлы XML в другой вывод. В вашем случае вы можете использовать относительно простое преобразование XSL для вывода списка.

Это может сделать это:

records.xml:

<?xml version = "1.0"?>
<?xml-stylesheet type = "text/xsl" href = "style.xsl"?>
<Records>
  <Record>
    <name>adam</name>
    <telephonenumber>000</telephonenumber>
  </Record>
  <Record>
    <name>mike</name>
    <telephonenumber>001</telephonenumber>
  </Record>
</Records>

style.xsl

<xsl:stylesheet xmlns:xsl = "http://www.w3.org/1999/XSL/Transform" version = "1.0">
  <xsl:output method = "text" omit-xml-declaration = "yes" indent = "no"/>
  <xsl:template match = "Record">
    <xsl:value-of select = "name"/><xsl:text> </xsl:text><xsl:value-of select = "telephonenumber"/>
  </xsl:template>
</xsl:stylesheet>

Я тестировал его с этот инструмент, и он работает.

Обычно, если преобразование генерирует текст, вы должны установить для метода xsl: output значение «text». Это ничего не изменит в этом конкретном преобразовании (хотя с некоторыми). Но я видел инструменты XML, которые проверяют метод, чтобы узнать, должны ли они проверять вывод на правильность, что вам здесь не нужно.

Robert Rossney 23.10.2008 23:54

Ответ Майкла Харена XSLT - лучший ответ.

Но в качестве альтернативы, если вы на самом деле не хотите ответа в виде XML, вы можете вернуть все, что вы ДЕЙСТВИТЕЛЬНО хотите, от веб-службы (при условии, что это ваша, а не сторонняя служба).

Нет правила, согласно которому веб-служба должна возвращать XML. Просто убедитесь, что вы обслуживаете соответствующий MIME-тип.

Другие вопросы по теме