C# 使用SED提取XML标记之间的值
我正在从服务器接收以下格式的数据:C# 使用SED提取XML标记之间的值,c#,windows,sed,grep,C#,Windows,Sed,Grep,我正在从服务器接收以下格式的数据: gin</type><sessionId>1601</sessionId><directory><default>DepthOfBook</default><study type="DepthOfBook"/ gin1601DepthOfBook类似的东西可以工作: sed -e 's/<\/sessionId>/<\/sessionId>\n/g' |
gin</type><sessionId>1601</sessionId><directory><default>DepthOfBook</default><study type="DepthOfBook"/
gin1601DepthOfBook类似的东西可以工作:
sed -e 's/<\/sessionId>/<\/sessionId>\n/g' | sed -n 's/.*<sessionId>\([^<]*\)<\/sessionId>.*/\1/p'
sed-e's//\n/g'| sed-n's/*\([^我建议使用,这是一种XML查询语言。如果安装了Perl模块,则可以在shell中使用以下命令:
xpath -q -e '//sessionId/text()' <input_file>
xpath-q-e'//sessionId/text()
这可能适合您(GNU-sed):
sed'/!d;s//\n/;s/[^\n]*\n/;:a;$!{/!n;//!ba};y/\n/;s/\n/;P;d'文件
给定的数据是格式良好的XML?作者声明标记是XML,因此我假设他有一个XML文档(否则说明标记是XML是没有用的),应该始终是XML文档,否则就不是XML文档。
xpath -q -e '//sessionId/text()' <input_file>
sed '/<sessionId>/!d;s//\n/;s/[^\n]*\n//;:a;$!{/<\/sessionId>/!N;//!ba};y/\n/ /;s/<\/sessionId>/\n/;P;D' file