php - XML 转换为其他 XML
问题描述
每天我都需要将格式从 XML(A) 转换为 XML(B) 并将新的 XML 保存在服务器上。这是如何最好地存档的?
想法是:
- 用 PHP 提取 XML(A) 并保存到 MySQL 数据库。打印出新的 XML(B)。
- 使用 PHP 加载 XML(A) 并转换为 XML(B)
有人可以展示将 XML 标记转换为另一个标记或属性的示例吗?
这是XML (A)
<?xml version="1.0" encoding="UTF-8"?>
<EventList><!--Movie description-->
<listmovies>
<Movie No="9111">
<Name>filmtitle</Name>
<Imagepath>imagepic1.jpg</Imagepath>
<Synopsis>Cowboy og Indianer planlægger en surprise fødselsdagsfest for Hest, men ender ud i store
problemer da de bestiller 50 mio. mursten til barbecuegrillen, i stedet for 50. Det bliver starten på en forunderlig rejse hvor trioen rejser til Jordens midte. Kilde: Angel Distribution
</Synopsis>
</Movie>
</listmovies>
<!--Event description-->
<Event No="0003" MovieNo="9111">
<Period>
<Start Date="153677" Time="44400">2020-10-02T12:20:00+02:00</Start>
</Period>
</Event>
</EventList>
达到的结果。XML (B)
<?xml version="1.0" encoding="UTF-8"?>
<!-- Movie description -->
<FluxAgenda>
<Film id="9111"
titre="filmtitle"
resume="Cowboy og Indianer planlægger en surprise fødselsdagsfest for Hest, men ender ud i store problemer da de bestiller 50 mio. mursten til barbecuegrillen, i stedet for 50. Det bliver starten på en forunderlig rejse hvor trioen rejser til Jordens midte. Kilde: Angel Distribution"/>
<!-- Event description -->
<EvenementSimple id="0003" dateFin="153677">
<Horaires>
<Date date="2020-10-02" heure="12:20"/>
</Horaires>
</EvenementSimple>
<Affiches>
<Photo url="imagepic1.jpg" filmId="9111"/>
</Affiches>
</FluxAgenda>
解决方案
您可以对输入 XML 使用简单的 XSLT 转换来获得所需的输出:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="1.0">
<xsl:output method="xml" indent="yes"/>
<xsl:template match="EventList">
<FluxAgenda>
<xsl:apply-templates select="listmovies/Movie"/>
<xsl:apply-templates select="Event"/>
<xsl:apply-templates select="listmovies/Movie/Imagepath"/>
</FluxAgenda>
</xsl:template>
<xsl:template match="Movie">
<Film id="{@No}" titre="{Name}" resume="{Synopsis}"/>
</xsl:template>
<xsl:template match="Event">
<EvenementSimple id="{@No}" dateFin="{Period/Start/@Date}">
<Horaires>
<xsl:apply-templates select="Period"/>
</Horaires>
</EvenementSimple>
</xsl:template>
<xsl:template match="Period">
<Date date="{substring(Start,1,10)}" heure="{substring(Start,12,5)}"/>
</xsl:template>
<xsl:template match="Imagepath">
<Affiches>
<Photo url="{.}" filmId="{../../Movie/@No}"/>
</Affiches>
</xsl:template>
</xsl:stylesheet>
看到它在这里工作:https ://xsltfiddle.liberty-development.net/aixRuu/25
推荐阅读
- python - 在 Odo 12.0 上通过 CodUP 模块安装 MRO 时出错
- c++ - C++ 有符号转换为无符号,为什么呢?
- php - Postgresql 10 PL/pgSQL 函数数组参数
- reactjs - 在 redux 中的何处以及如何添加 SignalR?
- javascript - 如何使用 OOP JavaScript 进行碰撞?
- java - 我需要用主线程控制这两个线程的执行吗?
- mysql - 为什么MySQL“WHERE”子句近似:即使条件不满足也检索值
- android - Nativescript Socket 连接超时
- python - python脚本搜索特定文件类型的目录
- javascript - Fizz Buzz 解决方案:意外的令牌功能?