powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Экспорт в xml по шаблону
25 сообщений из 30, страница 1 из 2
Экспорт в xml по шаблону
    #38372005
Frost_Imp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Комрады, добрый день!
Заставила меня судьба заняться таким вопросом, как экспорт из Access в xml. Да не просто экспорт, а хитрый.
Небольшая предыстория.
Есть файл xml определенного формата, который понимает определенное ПО. Вот один сегмент этого файла:
+
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
<client id='param1'>
	<offer 
		id='param2'
		grouptype='param3'
		>
		<params>
			<text>param4 text>
			<sum>param5</sum>
		</params>
	</offer>
</client> 


Вместо параметров "param..." подставляются значения из большой таблицы. В итоге формируется большой xml, в котором повторяются секции client с разными данными и скармливаются ПО.
Первоначально проблему создания этого файла я решил довольно незамысловато - слияние Word и Excel с последующим копированием результата в txt и ручным дополнением заголовка. Все было бы хорошо, но на таблице из овер 40 тысяч записей Word тихо скончался.
Увидел, что Access умеет экспортировать таблицу в xml файл, но не нашел, как мне прописать статичные данные, чтобы итоговый файл не просто выгружал секции данных, но и в нужном мне формате.
Соответственно вопрос:
1. Возможно ли это?
2. Если да - пожалуйста, скажите как.
3. (в качестве факультатива) Может, есть другие более удобные способы?
P.S. С xml знаком ооочень поверхностно, поэтому дражайше прошу избегать специфических определений и профессионального сленга.
Заранее благодарю за помощь!
_____________________
А что на самом деле хотел сказать "Frost_Imp" никто не знает, так как администрация форума попросила его быть вежливым.
...
Рейтинг: 0 / 0
Экспорт в xml по шаблону
    #38372041
Фотография nord-woolf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А нельзя ли "статичные" данные поиметь в запросе, и экспортировать данные не таблицы, а запроса?
...
Рейтинг: 0 / 0
Экспорт в xml по шаблону
    #38372254
Frost_Imp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Можно, но я не понимаю, как это поможет делу
...
Рейтинг: 0 / 0
Экспорт в xml по шаблону
    #38372445
Создать xml гораздо проще, чем прочитать. Это же обычный текстовый файл, его можно создать средствами VBA, или FSO, или ADODB.Stream. Создаете новый файл с заголовком, а затем в цикле по Recordset-у формируете и добавляете блоки.
...
Рейтинг: 0 / 0
Экспорт в xml по шаблону
    #38372722
Frost_Imp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Комрады, кому не сложно и если не лень - приведите пожалуйста пример, как мне создать одну секцию по шаблону, описанному выше и добавить в нее данные из полей таблицы. Буду очень благодарен!
...
Рейтинг: 0 / 0
Экспорт в xml по шаблону
    #38372979
qwerty112
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Frost_Imp,

Код: vbnet
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.
Sub xml_test()
    Dim xmlParser As Object ' MSXML2.DOMDocument
    Dim xmlInstr As Object ' MSXML2.IXMLDOMProcessingInstruction
    Dim rootNode As Object ' MSXML2.IXMLDOMElement
    Dim subNode1 As Object ' MSXML2.IXMLDOMElement
    Dim subNode2 As Object ' MSXML2.IXMLDOMElement
    Dim subNode3 As Object ' MSXML2.IXMLDOMElement
    Dim subNode4 As Object ' MSXML2.IXMLDOMElement
    
    
    Set xmlParser = CreateObject("Msxml2.DOMDocument")
    
    Set xmlInstr = xmlParser.createProcessingInstruction("xml", "version='1.0'")
    xmlParser.appendChild xmlInstr
    
    Set rootNode = xmlParser.appendChild(xmlParser.createElement("haba-haba"))
    
    '   --  Этот "кусок кода" у тебя будет повторяться в цикле, для всех clients
    Set subNode1 = rootNode.appendChild(xmlParser.createElement("client"))
    subNode1.setAttribute "id", "param1"
    
    Set subNode2 = subNode1.appendChild(xmlParser.createElement("offer"))
    subNode2.setAttribute "id", "param2"
    subNode2.setAttribute "grouptype", "param3"

    Set subNode3 = subNode2.appendChild(xmlParser.createElement("params"))
    
    Set subNode4 = subNode3.appendChild(xmlParser.createElement("text"))
    subNode4.Text = "param4"
    
    Set subNode4 = subNode3.appendChild(xmlParser.createElement("sum"))
    subNode4.Text = "param5"
    '   --  конец "куска кода"
    
    Debug.Print xmlParser.XML
    'xmlParser.save "..."
End Sub


Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
<?xml version="1.0"?>
<haba-haba>
	<client id="param1">
		<offer id="param2" grouptype="param3">
			<params>
				<text>param4</text>
				<sum>param5</sum>
			</params>
		</offer>
	</client>
</haba-haba>
...
Рейтинг: 0 / 0
Экспорт в xml по шаблону
    #38373099
Frost_Imp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
qwerty112 , огромное!
Прошелся по своему xml, вывел нужные поля и получил такие вопросы:
1. Как выводить значение нод (или параметров) не в "", а в '' ?
2. Можно ли сделать так, чтобы просмотрщики xml (тот же Notepad++) выводили параметры не строкой, а в столбец? (совсем неважный вопрос, так как касается исключительно восприятия файла)
3. Есть у меня 3 параметра одной ноды, выглядит это так:
Код: xml
1.
2.
3.
4.
5.
		<actions>
			<action id='1' type='nameaction1'>текст1</action>
			<action id='2' type='nameaction2'>текст2</action>
			<action id='0' type='nameaction3'>текст3</action>
		</actions>


Вопрос в том - как должна выглядеть таблица, откуда я буду забирать эти значения? (структура не моя, меня принуждают пользоваться такой)
4. qwerty112, вы меня расстреляете, но я не могу забрать эти данные (param...) из таблицы, знаний маловато. Перебрал кучу примеров из интернета, но для непонимающего замена одних строк кода на другие мало чем помогает. Подскажите (да, действительно звучит как "сделайте за меня", но я в безвыходной ситуации), как это сделать. Насколько я понимаю, нужно знать имя таблицы, как-то к ней подключиться и брать записи по циклу, пока они не кончатся.
...
Рейтинг: 0 / 0
Экспорт в xml по шаблону
    #38373240
qwerty112
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Frost_Imp1. Как выводить значение нод (или параметров) атрибутов не в "", а в '' ?

честно говоря - не знаю, есть ли такая "настройка" в Msxml2.DOMDocument
НО знаю точно, что хмл-парсёру, какой из этих ограничителей будет использоватся - "по барабану"
вот, например, IE всё равно, выводит его как " (рис.)

так что если это "критично", я ничего "умнее" strTemp = Replace(xmlParser.XML, """", "'")
и не предложу ...

Frost_Imp2. Можно ли сделать так, чтобы просмотрщики xml (тот же Notepad++) выводили параметры не строкой, а в столбец? (совсем неважный вопрос, так как касается исключительно восприятия файла)

через IE можно просматривать, ... или Визуал Студию, если есть...
там будет выводится отформатированный

Frost_Imp3. Есть у меня 3 параметра одной ноды, выглядит это так:
Код: xml
1.
2.
3.
4.
5.
		<actions>
			<action id='1' type='nameaction1'>текст1</action>
			<action id='2' type='nameaction2'>текст2</action>
			<action id='0' type='nameaction3'>текст3</action>
		</actions>


Вопрос в том - как должна выглядеть таблица, откуда я буду забирать эти значения? (структура не моя, меня принуждают пользоваться такой)

нуу, иерархический хмл, значит у тебя
это - нормально, так обычно и есть

например, у одного client - несколько offer
если всё в одной таблице, тогда нужно выборку рекордсета отсортировать по client
и вывод нужного "блока" - делать пока его "иерархический родитель" неизменится

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
dim Current_client
set rs = currentDB.openrecordset ("select * from MyTab order by client")
do while not rs.EOF
    '   --  Этот "кусок кода" у тебя будет повторяться в цикле, для всех clients
    Set subNode1 = rootNode.appendChild(xmlParser.createElement("client"))
Current_client = rs.fields("id")
    subNode1.setAttribute "id", rs.fields("id") ' "param1"

  do while Current_client = rs.fields("id")
    Set subNode2 = subNode1.appendChild(xmlParser.createElement("offer"))
    subNode2.setAttribute "id", "param2"
    subNode2.setAttribute "grouptype", "param3"

    ' ....

    if rs.eof then exit do
    rs.movenext
    Current_client = rs.fields("id")  
  loop

  if rs.eof then exit do
  rs.movenext
loop
    '   --  конец "куска кода"



если эти "составляющие" иерархии - в разных таблицах - то ещё проще,
- открываешь на всех таб. рекордсеты,
- идёшь по "главному" (client) и для каждого client_id - фильтруешь и выводишь offer

Frost_Imp4. ...
Подскажите (да, действительно звучит как "сделайте за меня", но я в безвыходной ситуации), как это сделать. Насколько я понимаю, нужно знать имя таблицы, как-то к ней подключиться и брать записи по циклу, пока они не кончатся.
дык, "не вопрос"
приведи 5-10 строк из реальной структуры данных и какой результат на этих данных хочешь получить
имён/паролей/явок - не нужно, это всё замени на какую-нибудь "лабуду"

выложишь в mdb - будет ещё лучше ...
...
Рейтинг: 0 / 0
Экспорт в xml по шаблону
    #38373587
Frost_Imp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Приложил файлик. Есть нужная структура, немного данных, во втором модуле мои попытки все это нарисовать. Формат выдаваемого xml настроен максимально
...
Рейтинг: 0 / 0
Экспорт в xml по шаблону
    #38373604
Frost_Imp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
По поводу третьего пункта
Не делал, но чувствую, что ты меня не совсем верно понял. Вот полностью структура выходного файла
...
Рейтинг: 0 / 0
Экспорт в xml по шаблону
    #38373903
qwerty112
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Frost_ImpПриложил файлик.
qwerty112выложишь в mdb - будет ещё лучше ...
мне нечем открыть аццдб
...
Рейтинг: 0 / 0
Экспорт в xml по шаблону
    #38373934
Frost_Imp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сори
...
Рейтинг: 0 / 0
Экспорт в xml по шаблону
    #38374000
qwerty112
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Frost_ImpПо поводу третьего пункта
Не делал, но чувствую, что ты меня не совсем верно понял. Вот полностью структура выходного файла


даа, понял я правильно,
просто я жж "не ожидал" полей action_0 / action_1 / action_2 / action_3 :)
по уму - это должно было быть в другой таблице ...
и вообще, пример "неудачный" - я ж попросил пример хмл-я на данных файла ... вот что это за param41 или param46 ? откуда они берутся ?

Код: vbnet
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.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
Sub xml_test()
    Dim xmlParser As Object ' MSXML2.DOMDocument
    Dim xmlInstr As Object ' MSXML2.IXMLDOMProcessingInstruction
    Dim rootNode As Object ' MSXML2.IXMLDOMElement
    Dim subNode1 As Object ' MSXML2.IXMLDOMElement
    Dim subNode2 As Object ' MSXML2.IXMLDOMElement
    Dim subNode3 As Object ' MSXML2.IXMLDOMElement
    Dim subNode4 As Object ' MSXML2.IXMLDOMElement
    
    Dim rs1 As Object 'Dao.recordset
    Dim rs2 As Object 'Dao.recordset
    Dim rs3 As Object 'Dao.recordset
    
    Set xmlParser = CreateObject("Msxml2.DOMDocument")
    Set xmlInstr = xmlParser.createProcessingInstruction("xml", "version='1.0' encoding='UTF-8'")
    xmlParser.appendChild xmlInstr
    
    Set rootNode = xmlParser.appendChild(xmlParser.createElement("root")) 'создаем рутовую ноду
    
    Set rs1 = CurrentDb.OpenRecordset("select * from tblOffers order by client_id")
    Set rs2 = CurrentDb.OpenRecordset("select * from tblDescr")
    
    Do While Not rs1.EOF
        '   --  Этот "кусок кода" у тебя будет повторяться в цикле, для всех clients
        
        Set subNode1 = rootNode.appendChild(xmlParser.createElement("client"))
        subNode1.setAttribute "id", rs1.fields("client_id")
        
        rs2.Filter = "offer_id='" & rs1.fields("offer_id") & "'"
        Set rs3 = rs2.OpenRecordset
        Do While Not rs3.EOF
        
            Set subNode2 = subNode1.appendChild(xmlParser.createElement("offer"))
            subNode2.setAttribute "id", rs3.fields("offer_id")
            subNode2.setAttribute "grouptype", rs3.fields("grouptype")
            subNode2.setAttribute "type", rs3.fields("type")
            subNode2.setAttribute "active", rs3.fields("active")
            subNode2.setAttribute "hot", rs3.fields("hot")
            subNode2.setAttribute "datefrom", Format(rs3.fields("from"), "dd\.mm\.yyyy")
            subNode2.setAttribute "dateto", Format(rs3.fields("to"), "dd\.mm\.yyyy")
            ' ---
            Set subNode3 = subNode2.appendChild(xmlParser.createElement("params"))
            Set subNode4 = subNode3.appendChild(xmlParser.createElement("text"))
            subNode4.Text = "хз откуда берётся значение"
            Set subNode4 = subNode3.appendChild(xmlParser.createElement("sum"))
            subNode4.Text = rs3.fields("sum")
            Set subNode4 = subNode3.appendChild(xmlParser.createElement("percent"))
            subNode4.Text = rs3.fields("percent")
            Set subNode4 = subNode3.appendChild(xmlParser.createElement("term"))
            subNode4.Text = rs3.fields("term")
            Set subNode4 = subNode3.appendChild(xmlParser.createElement("currency"))
            subNode4.Text = rs3.fields("currency")
            Set subNode4 = subNode3.appendChild(xmlParser.createElement("taxpercent"))
            subNode4.Text = rs3.fields("taxpercent")
            Set subNode4 = subNode3.appendChild(xmlParser.createElement("validto"))
            subNode4.Text = "хз откуда берётся значение"
            ' ---
            Set subNode3 = subNode2.appendChild(xmlParser.createElement("actions"))
            If Not IsNull(rs3.fields("action_0")) Then
                Set subNode4 = subNode3.appendChild(xmlParser.createElement("action"))
                subNode4.setAttribute "id", "0"
                subNode4.setAttribute "type", rs3.fields("action_0")
                subNode4.Text = "хз откуда берётся значение"
            End If
            If Not IsNull(rs3.fields("action_1")) Then
                Set subNode4 = subNode3.appendChild(xmlParser.createElement("action"))
                subNode4.setAttribute "id", "1"
                subNode4.setAttribute "type", rs3.fields("action_1")
                subNode4.Text = "хз откуда берётся значение"
            End If
            If Not IsNull(rs3.fields("action_2")) Then
                Set subNode4 = subNode3.appendChild(xmlParser.createElement("action"))
                subNode4.setAttribute "id", "2"
                subNode4.setAttribute "type", rs3.fields("action_2")
                subNode4.Text = "хз откуда берётся значение"
            End If
            If Not IsNull(rs3.fields("action_3")) Then
                Set subNode4 = subNode3.appendChild(xmlParser.createElement("action"))
                subNode4.setAttribute "id", "3"
                subNode4.setAttribute "type", rs3.fields("action_3")
                subNode4.Text = "хз откуда берётся значение"
            End If
            ' ---
            Set subNode3 = subNode2.appendChild(xmlParser.createElement("fields"))
            subNode3.setAttribute "id", rs3.fields("field_id")
            subNode3.setAttribute "type", rs3.fields("field_type")
            subNode3.setAttribute "text", rs3.fields("field_text")
                    
            ' ---
            rs3.MoveNext
        Loop
        '   --  конец "куска кода"
        rs1.MoveNext
    Loop
    rs1.Close
    rs2.Close
    rs3.Close
    
'    Debug.Print xmlParser.XML
    
    xmlParser.Save CurrentProject.Path & "\haba.xml"

    Set xmlParser = Nothing
    Set rs1 = Nothing
    Set rs2 = Nothing
    Set rs3 = Nothing
End Sub

...
Рейтинг: 0 / 0
Экспорт в xml по шаблону
    #38374150
Frost_Imp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дружище, спасибо!
Разбираю твой файл, но не совсем понимаю полет твоих мыслей. Сначала ты создаешь два рекордсета
Код: vbnet
1.
2.
    Set rs1 = CurrentDb.OpenRecordset("SELECT top 10 * FROM tblOffers") 'упростил
    Set rs2 = CurrentDb.OpenRecordset("select * from tblDescr")


а затем делаешь непонятную мне вещь
Код: vbnet
1.
2.
        rs2.Filter = "offer_id='" & rs1.Fields("offer_id") & "'"
        Set rs3 = rs2.OpenRecordset


В итоге в local rs3 : Name : "select * from tblDescr" : String
и никак rs1 не связан с rs2.
А почему нельзя создать рекордсет со связью tblOffers и tblDescr сразу? И оттуда уже забирать данные.
Код: vbnet
1.
2.
    Set rs4 = CurrentDb.OpenRecordset("SELECT TOP 10 * FROM tblOffers " _
    & "INNER JOIN tblDescr ON tblOffers.offer_id = tblDescr.offer_id")
...
Рейтинг: 0 / 0
Экспорт в xml по шаблону
    #38374250
Frost_Imp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Поясню, почему не понимаю (тут, видимо, вмешиваются основы работы с рекордсетами.
Итак, сначала разберем то, что ты сделал. Было две таблицы: tblOffers b tblDescr
Каждый рекордсет смотрел в свою таблицу и забирал все данные
Код: vbnet
1.
2.
    Set rs1 = CurrentDb.OpenRecordset("select * from tblOffers order by client_id")
    Set rs2 = CurrentDb.OpenRecordset("select * from tblDescr")


После этого я несколько пересмотрел структуры таблиц (какие-то вещи из статических превратились в динамические и часть полей перекочевало из одной таблицы в другую) и у меня все умерло потому что:
-Самую первую субноду
Set subNode1 = rootNode.appendChild(xmlParser.createElement("client"))
subNode1.setAttribute "id", rs1.fields("client_id")
ты создаешь, глядя в rs1, где еще не применены никакие фильтры. Но мне нужно (предварительно ограничив выборку конкретным значением offer_id) чтобы client_id брался не первый попавшийся, а уже после применения фильтра, то есть из rs3. Но оттуда значение, почему-то не берется, хотя client_id присутствует.
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
    Set rs1 = CurrentDb.OpenRecordset("select * from tblOffers order by client_id")
    Set rs2 = CurrentDb.OpenRecordset("select * from tblDescr")
        rs2.Filter = "offer_id='" & rs1.Fields("offer_id") & "'"
        rs2.Filter = "offer_id='OF1608-3009'"
    Set rs3 = rs2.OpenRecordset
...
subNode1.setAttribute "id", rs3.fields("client_id")


Ругается "Элемент не обнаружен в данном семействе. Если я меняю обратно на
Код: vbnet
1.
subNode1.setAttribute "id", rs1.fields("client_id")


естественно, client_id возвращается, но без учета фильтра. Где прокол?
...
Рейтинг: 0 / 0
Экспорт в xml по шаблону
    #38374347
Frost_Imp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не понимаю.... Решил отказаться от Join совсем - я просто фильтрую оба рекордсета по нужному полю. Из первого записи берутся, причем правильно (с учетом выборки), из второго - нет
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
    Set rs1 = CurrentDb.OpenRecordset("SELECT tblOffers.* FROM tblOffers WHERE (((tblOffers.offer_id)='OF1608-3009'))")
    Set rs2 = CurrentDb.OpenRecordset("SELECT tblDescr.* FROM tblDescr WHERE (((tblDescr.offer_id)='OF1608-3009'))")
    Do While Not rs1.EOF
        Set subNode1 = rootNode.appendChild(xmlParser.createElement("client"))
        subNode1.setAttribute "id", rs1.Fields("client_id") 'ok
            Set subNode2 = subNode1.appendChild(xmlParser.createElement("offer"))
            subNode2.setAttribute "id", rs1.Fields("offer_id") 'ok
            subNode2.setAttribute "grouptype", rs2.Fields("grouptype") 'type mismatch
...
Рейтинг: 0 / 0
Экспорт в xml по шаблону
    #38374466
qwerty112
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Frost_Impа затем делаешь непонятную мне вещь
Код: vbnet
1.
2.
        rs2.Filter = "offer_id='" & rs1.Fields("offer_id") & "'"
        Set rs3 = rs2.OpenRecordset



в rs2 - вся таб.tblDescr
rs3 - открывается на основе rs2 с фильтром по rs1.Fields("offer_id")

Frost_ImpА почему нельзя создать рекордсет со связью tblOffers и tblDescr сразу? И оттуда уже забирать данные.
Код: vbnet
1.
2.
    Set rs4 = CurrentDb.OpenRecordset("SELECT TOP 10 * FROM tblOffers " _
    & "INNER JOIN tblDescr ON tblOffers.offer_id = tblDescr.offer_id")


в данном, конкретном случае - может и можно,
но в целом, структурно, в хмл-е полагается, что client связан с offer как "один ко многим"
...
Рейтинг: 0 / 0
Экспорт в xml по шаблону
    #38374623
Frost_Imp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
qwerty112, в итоге, как и говорил - делал без связи по условию, которое сразу подставлял в селект рекордсета. Потом подумаю, как это условие передавать в виде переменной и забирать откуда-нибудь из форму.
Причесал на 90%, ругань на тип была по причине пустого поля. Заполнил - и все взлетело
...
Рейтинг: 0 / 0
Экспорт в xml по шаблону
    #38381984
Frost_Imp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Знатоки xml, ау!
В продолжение истории... В общем^
1. Значение поля, из которого берутся данные,
Код: xml
1.
'later'>Позже<


2. В файл попадает это
Код: xml
1.
<action id="0" type="'later'>Позже<"/>


3. Парсер ругается на строку
ОШИБКА #6260: Проверка типа данных завершилась неудачей для атрибута, type, со значением: 'later'>Позже<
4. Должно получиться это
Код: xml
1.
<action id='0' type='later'>Позже</action>


Вижу, что ограничителем данных у меня выступают двойные кавычки. В других местах ругани нет, только здесь. Подскажите, гуру, что исправить.
Спасибо!
...
Рейтинг: 0 / 0
Экспорт в xml по шаблону
    #38382307
Frost_Imp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И еще один вопрос сразу: есть у меня поле со значением
true
но в xml попадает значение
T rue
то есть с большой буквы. А это важно, нужно с маленькой. Остальные текстовые значения переносятся без изменений.
...
Рейтинг: 0 / 0
Экспорт в xml по шаблону
    #38388841
Frost_Imp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Комрады, прошу помочь
...
Рейтинг: 0 / 0
Экспорт в xml по шаблону
    #38388866
qwerty112
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Frost_ImpЗнатоки xml, ау!
В продолжение истории... В общем^
1. Значение поля, из которого берутся данные,
Код: xml
1.
'later'>Позже<


2. В файл попадает это
Код: xml
1.
<action id="0" type="'later'>Позже<"/>


это надо понимать так, что ты НЕ создаешь файл через MSXML2.DOMDocument,
а "клеиш" его как простой текстовый файл, так ?

с DOMDocument, "В файл попадает это":
Код: vbnet
1.
type="'later'>Позже<"


и никакой ошибки, разумеется - нет, хотя и полученный хмл, отличается от того, что "планировалось"
...
Рейтинг: 0 / 0
Экспорт в xml по шаблону
    #38388873
qwerty112
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
qwerty112с DOMDocument, "В файл попадает это":
Код: vbnet
1.
type="'later'>Позже<"


и никакой ошибки, разумеется - нет, хотя и полученный хмл, отличается от того, что "планировалось"
форум исправляет &_g_t_; и &_l_t_; на > и < ))
Код: vbnet
1.
type="'later' &_g_t_; Позже &_l_t_;"


читать без подчеркиваний
...
Рейтинг: 0 / 0
Экспорт в xml по шаблону
    #38390634
Frost_Imp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
qwerty112 , дружище, наверное нужно перефразировать.
Мне нужно получить конструкцию:
Код: xml
1.
2.
3.
		<action id='1' type='interest'>интересно</action>
		<action id='2' type='notinterest'>неинтересно</action>
		<action id='0' type='later'>позже</action>


Формируется этот кусок предложенным тобой кодом
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
'       ||=======================секция <actions>=====================
            Set subNode3 = subNode2.appendChild(xmlParser.createElement("actions"))
            If Not IsNull(rs2.Fields("action_1")) Then
                Set subNode4 = subNode3.appendChild(xmlParser.createElement("action"))
                subNode4.setAttribute "id", "1"
                subNode4.setAttribute "type", rs2.Fields("action_1")
            End If
            If Not IsNull(rs2.Fields("action_2")) Then
                Set subNode4 = subNode3.appendChild(xmlParser.createElement("action"))
                subNode4.setAttribute "id", "2"
                subNode4.setAttribute "type", rs2.Fields("action_2")
            End If
            If Not IsNull(rs2.Fields("action_0")) Then
                Set subNode4 = subNode3.appendChild(xmlParser.createElement("action"))
                subNode4.setAttribute "id", "0"
                subNode4.setAttribute "type", rs2.Fields("action_0")
            End If


Что мне нужно хранить в таблице (учитывая, что может меняться текст "интересно", "неинтересно" и т.д., чтобы получалось то, что мне нужно? Возможно, нужно изменить код...
...
Рейтинг: 0 / 0
Экспорт в xml по шаблону
    #38390697
qwerty112
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Frost_ImpЧто мне нужно хранить в таблице (учитывая, что может меняться текст "интересно", "неинтересно" и т.д., чтобы получалось то, что мне нужно? Возможно, нужно изменить код...
вот всё выделенное
<action id='1' type='interest'>интересно</action>
есть данные, которые нужно где-то хранить

по уму - в отдельной табличке, которая связанная 1:М с tblOffers

НЕ по уму - ещё добавить по одному полю в tblOffers, для каждого action
action_0_engaction_0_rusaction_1_engaction_1_rus...laterпозжеinterestинтересно...
и в коде так
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
            Set subNode3 = subNode2.appendChild(xmlParser.createElement("actions"))
            If Not IsNull(rs2.Fields("action_1")) Then
                Set subNode4 = subNode3.appendChild(xmlParser.createElement("action"))
                subNode4.setAttribute "id", "1"
                subNode4.setAttribute "type", rs2.Fields("action_1_eng")
                subNode4.Text = rs2.Fields("action_1_rus")
            End If
            If Not IsNull(rs2.Fields("action_2")) Then
                Set subNode4 = subNode3.appendChild(xmlParser.createElement("action"))
                subNode4.setAttribute "id", "2"
                subNode4.setAttribute "type", rs2.Fields("action_2_eng")
                subNode4.Text = rs2.Fields("action_2_rus")
            End If
            If Not IsNull(rs2.Fields("action_0")) Then
                Set subNode4 = subNode3.appendChild(xmlParser.createElement("action"))
                subNode4.setAttribute "id", "0"
                subNode4.setAttribute "type", rs2.Fields("action_0_eng")
                subNode4.Text = rs2.Fields("action_0_rus")
            End If
...
Рейтинг: 0 / 0
25 сообщений из 30, страница 1 из 2
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Экспорт в xml по шаблону
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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