如何使用shell脚本更改xml中的标记

时间:2017-12-17 05:23:23

标签: xml xml-namespaces xmlstarlet

<?xml version="1.0" encoding="utf-8"?>
<widget xmlns="http://www.w3.org/ns/widgets" xmlns:cdv="http://cordova.apache.org/ns/1.0" id="in.rakshanshetty.ionic" version="bar">
  <name>ionic test</name>
  <description>An awesome my app</description>
  <author email="hi@ionicframework" href="http://ionicframework.com/">Ionic Framework Team</author>

</widget>

如何使用xmlstarlet

更改其中的作者电子邮件,href和内容

1 个答案:

答案 0 :(得分:0)

使用xmlstarlet:

import java.util.*;
import java.lang.*;
import java.io.*;

class GFG {
	public static void main(String args[]) throws IOException
	{
		Scanner sc=new Scanner(System.in);
		int t=sc.nextInt();
		while(t-- > 0)
		{	
			String str=sc.nextLine();
			char c='\n';
			int i;
			for(i=0;i<str.length()-1;i++)
			{
				c=str.charAt(i);
				if(c>=97&&c<=122)
				{
					if(i==0)
						System.out.print((char)(c-32));
					else if(i!=0&&str.charAt(i+1)==' '&&str.charAt(i-1)==' ')
						System.out.print((char)(c-32));
					else if(i!=0&&str.charAt(i+1)!=' '&&str.charAt(i-1)==' ')
						System.out.print((char)(c-32));
					else
						System.out.print(c);
				}
				else
					System.out.print(c);
			}
	        	c=str.charAt(i);
			if(c>=97&&c<=122)
				System.out.println((char)(c-32));
			else
				System.out.println(c);
				
		}   
	}
}

输出:

xmlstarlet edit -N x='http://www.w3.org/ns/widgets' \
                --update "//x:widget/x:author/@email" --value "foo@example.com" \
                --update "//x:widget/x:author/@href"  --value "http://www.example.com" \
                --update "//x:widget/x:author"        --value "foo" file.xml

如果要编辑inplace文件,请添加选项-L。