高管,execve的或系统调用:演示
#include <stdlib.h>
#include <unistd.h>
int main(int argc, const char* args[])
{
exitcode = system("xsltprox textonly.xslt input.xml > output");
// exitcode = exec("xsltproc", "textonly.xslt", "input.xml");
int exitcode;
}
前往fopen
输出(或std :: fstream的读者( “输出”)如果你喜欢)。请注意,系统很快就是一个安全漏洞,所以您不应该在关键应用程序(如守护进程)中使用它。 使用exec可以重定向。所以你也许可以从你的程序中打开一个pipe(),fork(),在孩子中将stdout filedescriptor分配给pipe()(参见dup2调用)和exec
。
父进程然后可以从管道读取输出而不需要临时文件。 所有这些都应该放在一个zillion教程中,我现在不需要时间去google了。
我可以建议使用perl或shell脚本。如果您发布一个实际的例子,我可以告诉你在这两个外壳和C/C++
更新这里是如何用XSLT
textonly.xslt做代码:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html" indent="yes"/>
<xsl:template match="/">
<xsl:for-each select="//*[text()]">
<xsl:if test="text()">
<xsl:value-of select="text()"/>:
</xsl:if>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
输出演示:
[email protected] ~/stacko
$ xsltproc.exe textonly.xslt input.xml
:
hi this is first li :
dsfn sdlkf sfd :
“我怎么用grep” 超级用户所属。 – 2011-04-01 09:56:55
如何生成子进程并使用此处的输出(C++) – sehe 2011-04-01 09:58:08
搜索“XML正则表达式”以找出为什么不使用'grep'来解析XML文件。 – 2011-04-01 17:41:57