Гость
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / XML -> JSON / 5 сообщений из 5, страница 1 из 1
01.10.2020, 11:34
    #40004487
Co_balt
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
XML -> JSON
Hi All!

Есть задача преобразовать XML-файл в JSON формат при помощи XSLT. Но я не нашел в интернете ни одной реализации, которая делает это корректно (создает валидный JSON файл)
Может у кого есть наработки по этой задачи?
Прилагаю XML файл, который надо преобразовать и JSON файл, который я хочу получить.


Код: 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.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
<?xml version="1.0" encoding="UTF-8"?>
<Rowsets DateCreated="2020-10-01T11:21:52" EndDate="2019-04-03T10:50:30" StartDate="2019-04-03T10:50:30" Version="12.1.9 Build(109)">
    <Rowset>
        <Columns>
            <Column Description="" MaxRange="1" MinRange="0" Name="ID" SQLDataType="1" SourceColumn="ID"/>
            <Column Description="Время возникновения события" MaxRange="1" MinRange="0" Name="TimeStamp" SQLDataType="93" SourceColumn="TimeStamp"/>
            <Column Description="" MaxRange="1" MinRange="0" Name="QueueName" SQLDataType="1" SourceColumn="QueueName"/>
            <Column Description="Статус сообщения" MaxRange="1" MinRange="0" Name="QueueStatus" SQLDataType="1" SourceColumn="QueueStatus"/>
            <Column Description="" MaxRange="1" MinRange="0" Name="Journal" SQLDataType="1" SourceColumn="Journal"/>
            <Column Description="Сообщение" MaxRange="1" MinRange="0" Name="Message" SQLDataType="1" SourceColumn="Message"/>
            <Column Description="" MaxRange="1" MinRange="0" Name="QueueNameID" SQLDataType="1" SourceColumn="QueueNameID"/>
            <Column Description="Статус сообщения" MaxRange="1" MinRange="0" Name="QueueStatusID" SQLDataType="1" SourceColumn="QueueStatusID"/>
        </Columns>
        <Row>
            <ID>959b7321-fe46-11ea-925a-e40d0a0ba55a</ID>
            <TimeStamp>2020-09-30T12:39:14</TimeStamp>
            <QueueName>MT_BOM</QueueName>
            <QueueStatus>Необработанные</QueueStatus>
            <Journal/>
            <Message>&lt;?xml version="1.0" encoding="UTF-8"?&gt;&#13;
&lt;MT_BOM&gt;&#13;
   &lt;ID_MSG&gt;959b7321-fe46-11ea-925a-e40d0a0ba55a&lt;/ID_MSG&gt;&#13;
   &lt;CSAP_MBOM&gt;&#13;
      &lt;MATERIAL&gt;PMQMII7878_5906.03&lt;/MATERIAL&gt;&#13;
      &lt;PLANT&gt;2000&lt;/PLANT&gt;&#13;
      &lt;ALTERNATIVE&gt;4&lt;/ALTERNATIVE&gt;&#13;
   &lt;/CSAP_MBOM&gt;&#13;
   &lt;I_STKO&gt;&#13;
      &lt;BASE_QUAN&gt;1000&lt;/BASE_QUAN&gt;&#13;
      &lt;BASE_UNIT&gt;ST&lt;/BASE_UNIT&gt;&#13;
   &lt;/I_STKO&gt;&#13;
   &lt;T_STPO&gt;&#13;
      &lt;item&gt;&#13;
         &lt;ITEM_NO&gt;0010&lt;/ITEM_NO&gt;&#13;
         &lt;ITM_IDENT&gt;MII00001&lt;/ITM_IDENT&gt;&#13;
         &lt;COMP_QTY&gt;1&lt;/COMP_QTY&gt;&#13;
         &lt;COMP_UNIT&gt;KG&lt;/COMP_UNIT&gt;&#13;
         &lt;COMPONENT&gt;001-300-01&lt;/COMPONENT&gt;&#13;
         &lt;PROC_TYPE/&gt;&#13;
         &lt;SPPROCTYPE&gt;74&lt;/SPPROCTYPE&gt;&#13;
      &lt;/item&gt;&#13;
      &lt;item&gt;&#13;
         &lt;ITEM_NO&gt;0020&lt;/ITEM_NO&gt;&#13;
         &lt;ITM_IDENT&gt;MII00002&lt;/ITM_IDENT&gt;&#13;
         &lt;COMP_QTY&gt;2&lt;/COMP_QTY&gt;&#13;
         &lt;COMP_UNIT&gt;KG&lt;/COMP_UNIT&gt;&#13;
         &lt;COMPONENT&gt;120206.01403&lt;/COMPONENT&gt;&#13;
         &lt;PROC_TYPE/&gt;&#13;
         &lt;SPPROCTYPE/&gt;&#13;
      &lt;/item&gt;&#13;
   &lt;/T_STPO&gt;&#13;
&lt;/MT_BOM&gt;</Message>
            <QueueNameID>12</QueueNameID>
            <QueueStatusID>0</QueueStatusID>
        </Row>
        <Row>
            <ID>859b7321-fe46-11ea-925a-e40d0a0ba55a</ID>
            <TimeStamp>2020-09-30T15:21:54</TimeStamp>
            <QueueName>MT_BOM</QueueName>
            <QueueStatus>Необработанные</QueueStatus>
            <Journal/>
            <Message>&lt;?xml version="1.0" encoding="UTF-8"?&gt;&#13;
&lt;MT_BOM&gt;&#13;
   &lt;ID_MSG&gt;859b7321-fe46-11ea-925a-e40d0a0ba55a&lt;/ID_MSG&gt;&#13;
&lt;/MT_BOM&gt;</Message>
            <QueueNameID>12</QueueNameID>
            <QueueStatusID>0</QueueStatusID>
        </Row>
    </Rowset>
</Rowsets>



не было тэга для JSON - поместил в C++
Код: plaintext
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.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
{
	"Rowsets" : {
		"@DateCreated" : "2020-10-01T11:21:52",
		"@EndDate" : "2019-04-03T10:50:30",
		"@StartDate" : "2019-04-03T10:50:30",
		"@Version" : "12.1.9 Build(109)",
		"Rowset" : {
			"Columns" : {
				"Column" : [ {
					"@Description" : "",
					"@MaxRange" : "1",
					"@MinRange" : "0",
					"@Name" : "ID",
					"@SQLDataType" : "1",
					"@SourceColumn" : "ID"
				}, {
					"@Description" : "Время возникновения события",
					"@MaxRange" : "1",
					"@MinRange" : "0",
					"@Name" : "TimeStamp",
					"@SQLDataType" : "93",
					"@SourceColumn" : "TimeStamp"
				}, {
					"@Description" : "",
					"@MaxRange" : "1",
					"@MinRange" : "0",
					"@Name" : "QueueName",
					"@SQLDataType" : "1",
					"@SourceColumn" : "QueueName"
				}, {
					"@Description" : "Статус сообщения",
					"@MaxRange" : "1",
					"@MinRange" : "0",
					"@Name" : "QueueStatus",
					"@SQLDataType" : "1",
					"@SourceColumn" : "QueueStatus"
				}, {
					"@Description" : "",
					"@MaxRange" : "1",
					"@MinRange" : "0",
					"@Name" : "Journal",
					"@SQLDataType" : "1",
					"@SourceColumn" : "Journal"
				}, {
					"@Description" : "Сообщение",
					"@MaxRange" : "1",
					"@MinRange" : "0",
					"@Name" : "Message",
					"@SQLDataType" : "1",
					"@SourceColumn" : "Message"
				}, {
					"@Description" : "",
					"@MaxRange" : "1",
					"@MinRange" : "0",
					"@Name" : "QueueNameID",
					"@SQLDataType" : "1",
					"@SourceColumn" : "QueueNameID"
				}, {
					"@Description" : "Статус сообщения",
					"@MaxRange" : "1",
					"@MinRange" : "0",
					"@Name" : "QueueStatusID",
					"@SQLDataType" : "1",
					"@SourceColumn" : "QueueStatusID"
				} ]
			},
			"Row" : [ {
				"ID" : "959b7321-fe46-11ea-925a-e40d0a0ba55a",
				"TimeStamp" : "2020-09-30T12:39:14",
				"QueueName" : "MT_BOM",
				"QueueStatus" : "Необработанные",
				"Journal" : null,
				"Message" : "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n<MT_BOM>\r\n   <ID_MSG>959b7321-fe46-11ea-925a-e40d0a0ba55a</ID_MSG>\r\n   <CSAP_MBOM>\r\n      <MATERIAL>PMQMII7878_5906.03</MATERIAL>\r\n      <PLANT>2000</PLANT>\r\n      <ALTERNATIVE>4</ALTERNATIVE>\r\n   </CSAP_MBOM>\r\n   <I_STKO>\r\n      <BASE_QUAN>1000</BASE_QUAN>\r\n      <BASE_UNIT>ST</BASE_UNIT>\r\n   </I_STKO>\r\n   <T_STPO>\r\n      <item>\r\n         <ITEM_NO>0010</ITEM_NO>\r\n         <ITM_IDENT>MII00001</ITM_IDENT>\r\n         <COMP_QTY>1</COMP_QTY>\r\n         <COMP_UNIT>KG</COMP_UNIT>\r\n         <COMPONENT>001-300-01</COMPONENT>\r\n         <PROC_TYPE/>\r\n         <SPPROCTYPE>74</SPPROCTYPE>\r\n      </item>\r\n      <item>\r\n         <ITEM_NO>0020</ITEM_NO>\r\n         <ITM_IDENT>MII00002</ITM_IDENT>\r\n         <COMP_QTY>2</COMP_QTY>\r\n         <COMP_UNIT>KG</COMP_UNIT>\r\n         <COMPONENT>120206.01403</COMPONENT>\r\n         <PROC_TYPE/>\r\n         <SPPROCTYPE/>\r\n      </item>\r\n   </T_STPO>\r\n</MT_BOM>",
				"QueueNameID" : 12,
				"QueueStatusID" : 0
			}, {
				"ID" : "859b7321-fe46-11ea-925a-e40d0a0ba55a",
				"TimeStamp" : "2020-09-30T15:21:54",
				"QueueName" : "MT_BOM",
				"QueueStatus" : "Необработанные",
				"Journal" : null,
				"Message" : "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n<MT_BOM>\r\n   <ID_MSG>859b7321-fe46-11ea-925a-e40d0a0ba55a</ID_MSG>\r\n</MT_BOM>",
				"QueueNameID" : 12,
				"QueueStatusID" : 0
			} ]
		}
	}
}


...
Рейтинг: 0 / 0
01.10.2020, 18:43
    #40004659
_Vasilisk_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
XML -> JSON
И в чем сложность?
Код: xml
1.
<xsl:output method="text" encoding="utf-8"/>

и каскад <xsl:text>.

С экранированием русских символов придется повозиться
...
Рейтинг: 0 / 0
02.10.2020, 10:07
    #40004785
Co_balt
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
XML -> JSON
_Vasilisk_
И в чем сложность?

Сразу видно, что Вы не знаете насколько глубока кроличья нора
...
Рейтинг: 0 / 0
02.10.2020, 10:51
    #40004795
_Vasilisk_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
XML -> JSON
Co_balt
_Vasilisk_
И в чем сложность?
Сразу видно, что Вы не знаете насколько глубока кроличья нора
Хорошо. Ищите не того, кто может дать совет, а надейтесь, что найдется тот, кто уже решил вашу задачу
...
Рейтинг: 0 / 0
02.10.2020, 16:15
    #40004936
vvvait
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
XML -> JSON
попробуй без &#13; в xml
...
Рейтинг: 0 / 0
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / XML -> JSON / 5 сообщений из 5, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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