我不再是程序员了。 我正在使用我的Windows媒体中心PC,并试图减少mcechannelinfo.xml中的垃圾。
很容易删除其他提供商(我不使用的有线电视运营商),但现在我在我的提供商尝试排序/删除我没有得到的频道。
数据分类如下:
<channel>
<id>Atlanta, DISH Atlanta::ZBUSN::mcepg</id>
<name>ZBUSN</name>
<num>708</num>
<subnum>0</subnum>
</channel>
<channel>
<id>Atlanta, DISH Atlanta::KIDTV::mcepg</id>
<name>KIDTV</name>
<num>9394</num>
<subnum>0</subnum>
</channel>
<channel>
<id>Atlanta, DISH Atlanta::WSBK::mcepg</id>
<name>WSBK</name>
<num>8775</num>
<subnum>0</subnum>
</channel>
<channel>
<id>Atlanta, DISH Atlanta::BLOCK::mcepg</id>
<name>BLOCK</name>
<num>349</num>
<subnum>0</subnum>
</channel>
正如你所看到的,那是一团糟。它既不是按字母顺序排列的字母,也不是数字的数字!!
如何按名称对数据进行排序,甚至更好? 我可以访问一些工具 - Excel,记事本++,以及我抓到的另一个名为XMLMIND的程序......
请帮忙!
确定。我尝试了你的响应,它似乎没有用,所以我从XML的顶部粘贴一个更大的剪辑,这样你就可以看到所有内容。
?xml version="1.0" encoding="utf-8"?>
<Channels>
<category name="Atlanta, DISH Atlanta">
<channel>
<id>Atlanta, DISH Atlanta::ESPNA::mcepg</id>
<name>ESPNA</name>
<num>148</num>
<subnum>0</subnum>
</channel>
<channel>
<id>Atlanta, DISH Atlanta::FSP::mcepg</id>
<name>FSP</name>
<num>391</num>
<subnum>0</subnum>
</channel>
<channel>
<id>Atlanta, DISH Atlanta::ACMAX::mcepg</id>
<name>ACMAX</name>
<num>313</num>
<subnum>0</subnum>
</channel>
<channel>
<id>Atlanta, DISH Atlanta::TBSHD::mcepg</id>
<name>TBSHD</name>
<num>139</num>
<subnum>0</subnum>
</channel>
我们非常感谢您的协助。
答案 0 :(得分:0)
您可以使用XSLT 1.0样式表。找到解析器并不难,甚至可以使用在线服务来处理它。
您没有发布格式正确的XML,因此我假设您有一个<channel>
之上的父节点,我将其称为<channels>
。所以我假设你的文件是这样的:
<?xml-stylesheet type="text/xsl" href="order-channels.xsl"?>
<channels>
<channel>
<id>Atlanta, DISH Atlanta::ZBUSN::mcepg</id>
<name>ZBUSN</name>
<num>708</num>
<subnum>0</subnum>
</channel>
...
</channels>
创建一个包含此XSL样式表的文件:
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output indent="yes"/>
<xsl:strip-space elements="*"/>
<xsl:template match="channels">
<xsl:copy>
<xsl:apply-templates select="channel">
<xsl:sort select="num"/>
</xsl:apply-templates>
</xsl:copy>
</xsl:template>
<xsl:template match="node()|@*">
<xsl:copy>
<xsl:apply-templates select="node()|@*"/>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
现在,您可以使用XSLT处理器或服务,并使用样式表转换XML。生成的XML将按编号排序channel
个节点。
您也可以使用this service进行试用。只需将源XML复制到XML文本框中,然后将XSL复制到XSL框中,然后按“Transform XML”。
您可以按不同的标准排序,将select
中的<xsl:sort />
属性替换为channel
上下文中的其他字段。
(不要忘记我对您的XML源做出了假设;如果您发布的内容只是简化,您可能必须根据源XML进行调整。)