С нами с 06.02.10
Сообщения: 795
Рейтинг: 716
|
Добавлено: 18/01/13 в 10:41 |
Есть ли решение или стоит самому писать?
Задача - есть ХМЛ с атрибутами.
СмартСидж не берет его. вообщем надо преобразовывать его в ХМЛ без атрибутов на лету.
|
|
|
|
С нами с 19.11.10
Сообщения: 34
Рейтинг: 14
|
Добавлено: 18/01/13 в 11:17 |
SimpleXML в пыхе, а для чего тебе именно это надо?
|
|
|
|
С нами с 06.02.10
Сообщения: 795
Рейтинг: 716
|
Добавлено: 18/01/13 в 11:36 |
для того что бы СмартСидж мог скушать. SimpleXML по умолчанию есть, или его как-то надо инициировать? Код: [развернуть] | <?php // Load and parse the XML document
$rss = simplexml_load_file('путь к ХМЛ');
$title = $rss->channel->title;
?>
<html xml:lang="en" lang="en">
<head>
<title><?php echo $title; ?></title>
</head>
<body>
<h1><?php echo $title; ?></h1>
<?php
// Здесь мы поместим цикл, чтобы включить заголовок элемента и описание
foreach ($rss->channel->item as $item) {
echo "<h2><a href='". $item->link. "'>". $item->title. "</a></h2>";
echo "<p>". $item->description. "</p>";
}
?>
</body>
</html> |
у меня не сработал.
|
|
|
|
С нами с 19.11.10
Сообщения: 34
Рейтинг: 14
|
Добавлено: 18/01/13 в 12:24 |
Yank: барин, покаж xml.
|
|
|
|
С нами с 09.03.09
Сообщения: 6053
Рейтинг: 3538
|
Добавлено: 18/01/13 в 13:08 |
http://php.net/manual/ru/book.xsl.php
index.php
Код: | <?php
$xml = new DOMDocument();
$xsl = new DOMDocument();
$xslt = new XSLTProcessor();
$xml->load('test.xml');
$xsl->load( 'test.xsl', LIBXML_NOCDATA);
$xslt->importStylesheet($xsl);
$xslt->transformToDoc($xml)->save('test2.xml'); |
test.xml
Код: | <?xml version="1.0" encoding="UTF-8"?>
<chanel>
<item title="Title1" link="Link1">
<foo>
<bar id="id1">bar1</bar>
</foo>
</item>
<item title="Title2" link="Link2">
<foo>
<bar id="id2">bar2</bar>
</foo>
</item>
</chanel> |
Преобразует все атрибуты в элементы:
test.xsl
Код: | <?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes" />
<xsl:template match="@* | node()">
<xsl:copy>
<xsl:apply-templates select="@* | node()" />
</xsl:copy>
</xsl:template>
<xsl:template match="@*">
<xsl:element name="{local-name(.)}">
<xsl:value-of select="." />
</xsl:element>
</xsl:template>
</xsl:stylesheet> |
test2.xml
Код: [развернуть] | <?xml version="1.0" encoding="UTF-8"?>
<chanel>
<item>
<title>Title1</title>
<link>Link1</link>
<foo>
<bar>
<id>id1</id>
bar1
</bar>
</foo>
</item>
<item>
<title>Title2</title>
<link>Link2</link>
<foo>
<bar>
<id>id2</id>
bar2
</bar>
</foo>
</item>
</chanel> |
Если нужно преобразовать атрибуты только определённых элементов (скажем item), то изменится только одна строка:
test.xsl
Код: | <?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes" />
<xsl:template match="@* | node()">
<xsl:copy>
<xsl:apply-templates select="@* | node()" />
</xsl:copy>
</xsl:template>
<xsl:template match="item/@*">
<xsl:element name="{local-name(.)}">
<xsl:value-of select="." />
</xsl:element>
</xsl:template>
</xsl:stylesheet> |
test2.xml
Код: [развернуть] | <?xml version="1.0" encoding="UTF-8"?>
<chanel>
<item>
<title>Title1</title>
<link>Link1</link>
<foo>
<bar id="id1">bar1</bar>
</foo>
</item>
<item>
<title>Title2</title>
<link>Link2</link>
<foo>
<bar id="id2">bar2</bar>
</foo>
</item>
</chanel> |
|
|
|
|
С нами с 06.02.10
Сообщения: 795
Рейтинг: 716
|
Добавлено: 18/01/13 в 17:10 |
Спасибо большое!
|
|
|
|
С нами с 24.03.05
Сообщения: 17
Рейтинг: 17
|
Добавлено: 29/01/13 в 16:35 |
Использую в PHP для работы с XML два разных способа.
Первый способ.
$xml_parser = xml_parser_create();
Второй способ
$ob=simplexml_load_string($str);
Оба способа позволяют удобно работать с XML
Какой выбрать – дело привычки.
Для сложных документов я предпочитаю xml_parser_create()
|
|
|
|
Текстовая реклама в форме ответа Заголовок и до четырех строчек текста Длина текста до 350 символов Купить рекламу в этом месте! |