Master-X
Регистрация
|
Вход
Форум
|
Новости
|
Статьи
Главная
»
Форум
»
Программинг, Скрипты, Софт, Сервисы
»
Тема:
Обработка XML
Новая тема
Ответить
цитата
18/01/13 в 10:41
Yank
Есть ли решение или стоит самому писать?
Задача - есть ХМЛ с атрибутами.
СмартСидж не берет его. вообщем надо преобразовывать его в ХМЛ без атрибутов на лету.
цитата
18/01/13 в 11:17
chudoff.a
SimpleXML
в пыхе, а для чего тебе именно это надо?
цитата
18/01/13 в 11:36
Yank
для того что бы СмартСидж мог скушать. 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> у меня не сработал.
цитата
18/01/13 в 12:24
chudoff.a
Yank:
барин, покаж xml.
цитата
18/01/13 в 13:08
Yacc
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>
цитата
18/01/13 в 17:10
Yank
Спасибо большое!
цитата
29/01/13 в 16:35
izxus
Использую в PHP для работы с XML два разных способа.
Первый способ.
$xml_parser = xml_parser_create();
Второй способ
$ob=simplexml_load_string($str);
Оба способа позволяют удобно работать с XML
Какой выбрать – дело привычки.
Для сложных документов я предпочитаю xml_parser_create()
Новая тема
Ответить
Эта страница в полной версии