|
|
|
| Здравствуйте! Помогите разобраться с xml файлами?
есть некий файл 3.xml который создан из excel, там два столбца телефон и имя, сам файл выглядит так
<?xml version="1.0"?>
<Workbook xmlns="urn:schemas-microsoft-com:office:spreadsheet"
xmlns:o="urn:schemas-microsoft-com:office:office"
xmlns:x="urn:schemas-microsoft-com:office:excel"
xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet"
xmlns:html="http://www.w3.org/TR/REC-html40">
<DocumentProperties xmlns="urn:schemas-microsoft-com:office:office">
<LastAuthor>Slava</LastAuthor>
<Created>2007-01-19T11:41:03Z</Created>
<LastSaved>2007-01-20T08:45:12Z</LastSaved>
<Version>10.3501</Version>
</DocumentProperties>
<OfficeDocumentSettings xmlns="urn:schemas-microsoft-com:office:office">
<DownloadComponents/>
<LocationOfComponents HRef="file:///E:\"/>
</OfficeDocumentSettings>
<ExcelWorkbook xmlns="urn:schemas-microsoft-com:office:excel">
<WindowHeight>9345</WindowHeight>
<WindowWidth>15180</WindowWidth>
<WindowTopX>120</WindowTopX>
<WindowTopY>75</WindowTopY>
<ProtectStructure>False</ProtectStructure>
<ProtectWindows>False</ProtectWindows>
</ExcelWorkbook>
<Styles>
<Style ss:ID="Default" ss:Name="Normal">
<Alignment ss:Vertical="Bottom"/>
<Borders/>
<Font ss:FontName="Arial Cyr" x:CharSet="204"/>
<Interior/>
<NumberFormat/>
<Protection/>
</Style>
<Style ss:ID="s21">
<Borders/>
</Style>
<Style ss:ID="s22">
<Alignment ss:Vertical="Top"/>
<Borders/>
<Font ss:FontName="Arial Cyr"/>
</Style>
<Style ss:ID="s23">
<Alignment ss:Horizontal="Left" ss:Vertical="Top" ss:WrapText="1"/>
<Borders/>
<Font ss:FontName="Arial Cyr" ss:Size="12" ss:Bold="1"/>
</Style>
<Style ss:ID="s24">
<Alignment ss:Horizontal="Left" ss:Vertical="Top" ss:WrapText="1"/>
<Borders/>
<Font ss:FontName="Arial Cyr" ss:Size="12"/>
</Style>
</Styles>
<Worksheet ss:Name="tbl99">
<Table ss:ExpandedColumnCount="2" ss:ExpandedRowCount="2" x:FullColumns="1"
x:FullRows="1" ss:StyleID="s21">
<Column ss:StyleID="s21" ss:Width="59.25"/>
<Column ss:StyleID="s21" ss:Width="103.5"/>
<Row ss:AutoFitHeight="0" ss:Height="15.75" ss:StyleID="s22">
<Cell ss:StyleID="s23"><Data ss:Type="String">телефон</Data></Cell>
<Cell ss:StyleID="s23"><Data ss:Type="String">имя</Data></Cell>
</Row>
<Row ss:AutoFitHeight="0" ss:Height="60">
<Cell ss:StyleID="s24"><Data ss:Type="Number">5555555</Data></Cell>
<Cell ss:StyleID="s24"><Data ss:Type="String">шуба</Data></Cell>
</Row>
</Table>
<WorksheetOptions xmlns="urn:schemas-microsoft-com:office:excel">
<PageSetup>
<Layout x:Orientation="Landscape"/>
<Header x:Data="&Л&"Arial Cyr,обычный"&08Страница __ из __"/>
<PageMargins x:Bottom="0.984251969" x:Left="0.78740157499999996"
x:Right="0.78740157499999996" x:Top="0.984251969"/>
</PageSetup>
<Print>
<ValidPrinterInfo/>
<PaperSizeIndex>9</PaperSizeIndex>
<HorizontalResolution>600</HorizontalResolution>
<VerticalResolution>0</VerticalResolution>
</Print>
<Selected/>
<DoNotDisplayGridlines/>
<Panes>
<Pane>
<Number>3</Number>
<ActiveRow>1</ActiveRow>
<ActiveCol>2</ActiveCol>
</Pane>
</Panes>
<ProtectObjects>False</ProtectObjects>
<ProtectScenarios>False</ProtectScenarios>
</WorksheetOptions>
<Sorting xmlns="urn:schemas-microsoft-com:office:excel">
<Sort>СМИ</Sort>
</Sorting>
</Worksheet>
</Workbook>
|
скрипт для обработки думаю должен быть примерно такой
<?
if (!($parser = xml_parser_create('UTF-8')))
{
echo('<p> ПРОГРАММУ ОБРАБОТКИ СОЗДАТЬ НЕ ВОЗМОЖНО! </P>');
exit();
}
//принять файл
$data = file_get_contents("3.xml");
// ПРОАНАЛИЗИРОВАТЬ ФАЙЛ И ПОМЕСТИМ РЕЗ В МАССИВ
xml_parse_into_struct($parser, $data, $structure, $index);
// УДАЛИТЬ ПРОГРАММУ ОБРАБОТКИ
xml_parser_free($parser);
foreach ($structure as $index => $val)
{
echo($val["value"]);
// как присвоить переменной $tel значения телефонов и переменной $name значения имена
}
?>
|
вопрос как из xml файла извлекать номера телефонов и имена и присваивать переменным $tel и $name соответственно? | |
|
|
|
|
|
|
|
для: Чайка
(22.01.2007 в 11:18)
| | А номер телефона в каком поле находится? | |
|
|
|
|
|
|
|
для: cheops
(22.01.2007 в 11:36)
| | примерно так
----------------------------------
| A | B |
-----------------------------------
| телефон | имя |
----------------------------------
| 5555555 | шуба |
---------------------------------- | |
|
|
|
|
|
|
|
для: Чайка
(22.01.2007 в 11:43)
| | Нет, где цифра 555555 в XML-файле? | |
|
|
|
|
|
|
|
для: cheops
(22.01.2007 в 12:18)
| | А что разве не видно?
<Row ss:AutoFitHeight="0" ss:Height="60">
<Cell ss:StyleID="s24"><Data ss:Type="Number">5555555</Data></Cell>
<Cell ss:StyleID="s24"><Data ss:Type="String">шуба</Data></Cell>
</Row> | |
|
|
|
|
|
|
|
для: cheops
(22.01.2007 в 11:36)
| |
<?
$parser = xml_parser_create('UTF-8');
$data = file_get_contents("xml.xml");
xml_parse_into_struct($parser, $data, $structure, $index);
xml_parser_free($parser);
foreach ( $structure as $tag ) {
if ( $tag['tag'] !== "DATA" ) continue;
if ( $tag['attributes']['SS:TYPE'] == "Number" )
$tel = $tag['value'];
$name = $tag['value'];
}
print $name." - ".$tel."<br/>";
| Так сойдёт? | |
|
|
|
|
|
|
|
для: Саня
(22.01.2007 в 13:15)
| | Спасибо | |
|
|
|
|
|
|
|
для: Чайка
(22.01.2007 в 11:18)
| | Извлечь информацию требуется именно при помощи xml_parse_into_struct() или регулярные выражения тоже сгодятся? | |
|
|
|
|
|
|
|
для: cheops
(22.01.2007 в 13:12)
| | Все равно, главное чтоб реально извлечь можно было, но если будет много колонок с разными данными то, как быть? | |
|
|
|