Nikolaj76 написал(а):
В моем понимании( возможно не совпадающем с Вашим)
пример XML:
<?xml version="1.0"?>
<CAT>
<NAME>Izzy</NAME>
<BREED>Siamese</BREED>
<AGE>6</AGE>
<ALTERED>yes</ALTERED>
<DECLAWED>no</DECLAWED>
<LICENSE>Izz138bod</LICENSE>
<OWNER>Colin Wilcox</OWNER>
</CAT>
И Ваш код:
<?xml version="1.0"?>
<PULT ContentType="request" Name="Test" GUID="E91AF61B9F2E47AA82A23310ECB01D85" IdDB="1">
<DISP Name="Диспетчерская" IdDB="1">
<STREET Name="ул. Pro" IdDB="3">
<HOME Name="д. Pro" IdDB="3">
<LIFT Name="п. 1" ID="3" GUID="C3AE5B687D17410FB52953E84D793F2B" IDPro="1" IdDB="5" Note="Не работает"
<ListStatus>
<Status Name="Открыто МП"/>
<Status Name="Кабина стоит"/>
</ListStatus>
</LIFT>
</HOME>
</STREET>
</DISP>
</PULT>
Вопрос (Без каких либо упреков, недовольства либо сарказма в Ваш адрес): Как обработать данный файл тег <Status> если он не один, его количество неизвестно и в каждом запросе отличается? цель обработки- формирование таблички в базе данных где каждый тег это своя ячейка.
P/S: еще раз не воспринимайте это как критику. Вы проделали огромный фронт работ и система Обь востребована в сфере лифтового хозяйства. Вы разработчик и мы в любом случае можем лишь подстраиваться под Ваше программное обеспечение. Но человек по своей натуре лентяй ( и я не исключение) поэтому хотелось бы при взаимодействие с Вашим оборудованием и программным обеспечением совершать как можно меньше лишних телодвижений
Язык XML
стандартизирован
И важно понять соответствует ли XML строка заявки стандарту на язык.
Если есть какие-то сомнения, то хотел бы их получить со ссылками на стандарт.
Почему это важно - использование XML делает описание каких-то параметров расширяемым, т.е. в описание можно добавлять новые параметры и этот не нарушит работу существующего ПО, если это ПО при чтении XML учитывает стандарт.
Конфигурационные файлы ДК "Обь" используют XML. Большие массивы данных передаются между модулями в виде XML.
В наших XML структурах используются атрибуты для большей компактности и читаемости, т.к. и человек может смотреть XML, а компактность важна для сетевой передачи.
Формируются и читаются XML данных штатными процедурами C++, C#, Java, Swift
Вот пример реального XML описания экранной формы универсального приложения Microsoft:
<Page
x:Class="WSPult.BatteryPage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="using:WSPult"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d" SizeChanged="Page_SizeChanged">
<Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<TextBlock x:Name="Address" Margin="0,0,0,0" Grid.Row="0" TextWrapping="Wrap" Text="TextBlock" VerticalAlignment="Top" FontSize="18" FontStyle="Italic"/>
<StackPanel Grid.Row="1" Orientation="Horizontal">
<TextBlock x:Uid="BatteryPageStatus" FontSize="18" />
<TextBlock x:Name="Status" x:Uid="BatteryPageStatusGood" Margin="10,0,0,0" FontSize="18" />
</StackPanel>
<StackPanel Grid.Row="2" Orientation="Horizontal">
<TextBlock x:Uid="BatteryPageNextTest" FontSize="18" />
<TextBlock x:Name="Next" x:Uid="BatteryPageTimeTest" Margin="10,0,0,0" FontSize="18" />
</StackPanel>
<StackPanel Grid.Row="3" Orientation="Horizontal">
<TextBlock Text="Uzar:" FontSize="18" />
<TextBlock x:Name="UZar" Text="UZar" Margin="10,0,0,0" FontSize="18" />
<TextBlock Text="Ustart:" Margin="10,0,0,0" FontSize="18" />
<TextBlock x:Name="Ustart" Text="Ustart" Margin="10,0,0,0" FontSize="18" />
<TextBlock Text="Ufinish:" Margin="10,0,0,0" FontSize="18" />
<TextBlock x:Name="Ufinish" Text="Ufinish" Margin="10,0,0,0" FontSize="18" />
</StackPanel>
<Canvas x:Name="PanelGraph" Grid.Row="4">
<Line x:Name="BegVert" Stroke="{ThemeResource ApplicationForegroundThemeBrush}" StrokeThickness="2"/>
<TextBlock x:Name="BegVertNum" Text="" FontSize="18" />
<Line x:Name="BegGoriz" Stroke="{ThemeResource ApplicationForegroundThemeBrush}" StrokeThickness="2"/>
<TextBlock x:Name="BegGorizNum" Text="" FontSize="18" />
<Line x:Name="Line1" Stroke="{ThemeResource ApplicationForegroundThemeBrush}" StrokeThickness="1"/>
<TextBlock x:Name="Num1" Text="" FontSize="18" />
<Line x:Name="Line2" Stroke="{ThemeResource ApplicationForegroundThemeBrush}" StrokeThickness="1"/>
<TextBlock x:Name="Num2" Text="" FontSize="18" />
<Line x:Name="Line3" Stroke="{ThemeResource ApplicationForegroundThemeBrush}" StrokeThickness="1"/>
<TextBlock x:Name="Num3" Text="" FontSize="18" />
<Line x:Name="Line4" Stroke="{ThemeResource ApplicationForegroundThemeBrush}" StrokeThickness="1"/>
<TextBlock x:Name="Num4" Text="" FontSize="18" />
<Line x:Name="Line5" Stroke="{ThemeResource ApplicationForegroundThemeBrush}" StrokeThickness="1"/>
<TextBlock x:Name="Num5" Text="" FontSize="18" />
<Line x:Name="Line6" Stroke="{ThemeResource ApplicationForegroundThemeBrush}" StrokeThickness="1"/>
<TextBlock x:Name="Num6" Text="" FontSize="18" />
<Line x:Name="Line7" Stroke="{ThemeResource ApplicationForegroundThemeBrush}" StrokeThickness="1"/>
<TextBlock x:Name="Num7" Text="" FontSize="18" />
<Line x:Name="Line8" Stroke="{ThemeResource ApplicationForegroundThemeBrush}" StrokeThickness="1"/>
<TextBlock x:Name="Num8" Text="" FontSize="18" />
<Line x:Name="Line9" Stroke="{ThemeResource ApplicationForegroundThemeBrush}" StrokeThickness="1"/>
<TextBlock x:Name="Num9" Text="" FontSize="18" />
<Line x:Name="Line10" Stroke="{ThemeResource ApplicationForegroundThemeBrush}" StrokeThickness="1"/>
<TextBlock x:Name="Num10" Text="" FontSize="18" />
<Line x:Name="Line11" Stroke="{ThemeResource ApplicationForegroundThemeBrush}" StrokeThickness="1"/>
<TextBlock x:Name="Num11" Text="" FontSize="18" />
<Line x:Name="Line12" Stroke="{ThemeResource ApplicationForegroundThemeBrush}" StrokeThickness="1"/>
<TextBlock x:Name="Num12" Text="" FontSize="18" />
<Line x:Name="Line13" Stroke="{ThemeResource ApplicationForegroundThemeBrush}" StrokeThickness="1"/>
<TextBlock x:Name="Num13" Text="" FontSize="18" />
<Line x:Name="Line14" Stroke="{ThemeResource ApplicationForegroundThemeBrush}" StrokeThickness="1"/>
<TextBlock x:Name="Num14" Text="" FontSize="18" />
<Line x:Name="Line15" Stroke="{ThemeResource ApplicationForegroundThemeBrush}" StrokeThickness="1"/>
<TextBlock x:Name="Num15" Text="" FontSize="18" />
<Path Stroke="Blue" StrokeThickness="4" >
<Path.Data>
<PathGeometry>
<PathGeometry.Figures>
<PathFigure x:Name="Graph">
</PathFigure>
</PathGeometry.Figures>
</PathGeometry>
</Path.Data>
</Path>
<TextBlock x:Name="CurU" Text="" FontSize="18" />
<TextBlock x:Name="TimEnd" Text="" FontSize="18" />
<Line x:Name="EndTestLine" Stroke="{ThemeResource ApplicationForegroundThemeBrush}" StrokeThickness="2"/>
<TextBlock x:Name="EndTestTime" Text="" FontSize="18" />
</Canvas>
</Grid>
</Page>