gpt4 book ai didi

php - linux中的XML解析,打印多个元素

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:07:07 26 4
gpt4 key购买 nike

所以我在网上找到了一个我想使用的用于在 linux 中解析 xml 的脚本,我希望能得到一些帮助来理解脚本的工作原理,以及如何编辑它以供我自己使用。

这是脚本 ( credit )

#!/bin/bash

cat $1 | awk '

START { pos=1; xml=$0 len=length(xml); endp=1 }

{ while(pos <= len) {
if(substr(xml,pos,7) == "<title>")
{
pos=pos+7;
endp=pos;
while((substr(xml,endp,8) != "</title>") && (endp < len))
{
endp++;
}
print " ",substr(xml,pos,endp-pos)," * ";
pos=endp+7;
}
pos++; } }'

Here是我将使用的 xml 数据的简化示例

我已经摆脱了标签两边的多余字符,并通过将脚本更改为此进行了一些其他调整

  #!/bin/bash

cat $1 | awk '

START { pos=1; xml=$0 len=length(xml); endp=1 }

{ while(pos <= len) {
if(substr(xml,pos,16) == "<sport><![CDATA[")
{
pos=pos+16;
endp=pos;
while((substr(xml,endp,11) != "]]></sport>") && (endp < len))
{
endp++;
}
print "",substr(xml,pos,endp-pos),"";
pos=endp+10;
}
pos++; } }'

所以使用这个脚本给我留下了一个带有这个结果的纯文本文件

Women's Soccer
Men's Soccer
Women's Soccer

最终我想要一个脚本输出如下

Women's Soccer Away @ South Carolina (Exhibition) at 7:00 PM
Men's Soccer Home vs. Ohio State at 7:00 PM
Women's Soccer Away @ William and Mary at 7:00 PM

对于那些想知道的人,这是调用解析脚本的 shell(忽略文件名和位置)

wget -O rss.xml http://en-us.fxfeeds.mozilla.com/en-US/firefox/headlines.xml
~dsl/bin/rssparse! rss.xml > headlines_$$.tmp
cd /tmp/ldmtrx
split --lines=30 /tmp/headlines_$$.tmp ldmtrxnews
cd /tmp
rm headlines_$$.tmp rss.xml

虽然我将不胜感激,但我不希望任何人为我完成这项任务,我真的很想要一些提示和帮助入门。我不确定如何在不同的元素上运行此脚本然后打印两个元素(例如 <sport><homeaway> )我可以再次运行脚本,但随后元素将打印在不同的行上。

最后,我想知道如何排除所有没有 <date> 的数据匹配今天的日期。感谢您的帮助。

最佳答案

您必须知道您的示例缺乏验证。它需要一些调整

检查 this pastie而不是 that pastie

然后使用 xmlstarlet你可以取代这个脚本所做的一切。

$ wget --output-document - http://pastie.org/pastes/4408130/download | xmlstarlet sel -t -m rss/channel/item -v sport -o ' Away @ ' -v opponent -o ' at ' -v time -na

输出:

Women's Soccer Away @ South Carolina (Exhibition) at 7:00 PM
Men's Soccer Away @ Ohio State (Exhibition) at 7:00 PM
Women's Soccer Away @ William and Mary at 7:00 PM

当输出是您需要的时,您可以使用 -C 和 xmlstarlet 来显示一个 xml 模板,您可以使用任何您需要特定解析的语言作为源代码。

关于php - linux中的XML解析,打印多个元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11821796/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com