我有以下XML文件:
<graph caption="Share Data Wave" subcaption="For Person's Name" xAxisName="Time" yAxisMinValue="-0.025" yAxisName="Voltage" decimalPrecision="5" formatNumberScale="0" numberPrefix="" showNames="1" showValues="0" showAlternateHGridColor="1" AlternateHGridColor="ff5904" divLineColor="ff5904" divLineAlpha="20" alternateHGridAlpha="5">
<set name="2010-08-27 12:00:20.636" value="25.020000" hoverText = "The difference from last value: 0" ></set>
<set name="2010-08-27 12:01:19.473" value="15.000000" hoverText = "The difference from last value: -10.02" ></set>
<set name="2010-08-27 12:01:24.494" value="15.020000" hoverText = "The difference from last value: 0.0199999999999996" ></set>
<set name="2010-08-27 12:01:44.188" value="18.250000" hoverText = "The difference from last value: 3.23" ></set>
<set name="2010-08-27 12:02:11.851" value="18.540000" hoverText = "The difference from last value: 0.289999999999999" ></set>
<set name="2010-08-27 12:02:47.109" value="16.520000" hoverText = "The difference from last value: -2.02" ></set>
<set name="2010-08-27 12:03:01.199" value="17.500000" hoverText = "The difference from last value: 0.98" ></set>
<set name="2010-08-27 12:03:03.030" value="25.020000" hoverText = "The difference from last value: 7.52" ></set>
<set name="2010-08-27 12:03:40.570" value="30.000000" hoverText = "The difference from last value: 4.98" ></set>
<set name="2010-08-27 12:04:27.490" value="32.250000" hoverText = "The difference from last value: 2.25" ></set>
<set name="2010-08-27 12:05:03.738" value="26.050000" hoverText = "The difference from last value: -6.2" ></set>
<set name="2010-08-27 12:05:14.511" value="18.540000" hoverText = "The difference from last value: -7.51" ></set>
<set name="2010-08-27 12:06:09.728" value="16.520000" hoverText = "The difference from last value: -2.02" ></set>
<set name="2010-08-27 12:06:58.329" value="17.500000" hoverText = "The difference from last value: 0.98" ></set>
</graph>
PHP中有没有办法改变这个文件,只显示2010-08-27 12:02:11.851(开始时间)到2010-08-27 12:05:03.738之间的一些数据点(结束)时间)并为用户提供开始时间的下拉菜单和结束时间的下拉菜单,同时保留顶部标签和底部标签?
有什么建议吗?
此致
安东尼
答案 0 :(得分:0)
这是可能的。例如。通过XSL(T)。许多浏览器甚至可以在客户端执行此操作 请参阅http://www.w3.org/TR/xslt和http://docs.php.net/book.xsl
答案 1 :(得分:0)
首先,您应该问自己是否确实想要更改文件。听起来您实际上想要使用此文件作为输入,并使用PHP通过下拉菜单生成HTML文件。
我认为Volker是正确的,你可能想要使用XSLT。基本上它是一种样式表,可以将XML文档转换为其他内容。但您也可以使用它来执行测试,这就是您选择所需日期范围的方式。
以下是XSLT的基本教程:http://www.w3schools.com/xsl/xsl_transformation.asp(但它不会告诉您选择日期范围需要了解的内容)。
你的XSL文件看起来像这样(我想 - 这没有经过测试):
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:php="http://php.net/xsl">
<xsl:output method="html" encoding="utf-8" indent="yes"/>
<xsl:template match="/graph">
<html><body>
<select>
<xsl:for-each select="set">
<xsl:if test="php:function('testDate',string(@name))"/>
<option value="">
<xsl:value-of select="php:function('formatDate',string(@name))"/>
</option>
</xsl:if>
</xsl:for-each>
</select>
</body></html>
</xsl:template>
</xsl:stylesheet>
在这种情况下,您将编写函数来测试日期是否与您设置的范围(testDate)匹配,并以您希望的方式格式化日期(formateDate;请参阅strtotime()和date()函数)。此外,您还需要确定在提交表单时要传回的值。然后按照这个例子让PHP使用这个XSL文件来解析XML文件: http://docs.php.net/manual/en/xsltprocessor.registerphpfunctions.php