IntelliJ์ structural search๋ฅผ ์ด์ฉํด xml ์ ํน์ attribute ์ด๋ฆ ๋ฐ๊พธ๊ธฐ
๋ฉฐ์น ๋์ ๋๋ฅผ ๊ดด๋กญํ๋ ๋์ ๋ฅผ ํด๊ฒฐํ๋ค.
ํ๊ณ ์ถ๋ ๋ฌธ์ ๋ intellij(Android Studio) ์์ ํน์ tag์ ํน์ attribute์ ์ด๋ฆ์ ์์ฝ๊ฒ ๋ฐ๊พธ๋ ๋ฐฉ๋ฒ์ ๋ฌด์์ธ๊ฐ! ์ด๋ค.
์๋ฅผ ๋ค์ด ์๋๋ก์ด๋ ํ๋ก์ ํธ์ ๋ชจ๋ ๋ ์ด์์ xml ํ์ผ์ ๋ค์ ธ
<mytag ... myns:title="abc"></mytag>
์ด๋ฐ ๋ ์๋ค์ ์ฐพ์์
<mytag ... myns:mytitle="abc"></mytag>
์ด๋ ๊ฒ ๊ณ ์น๋ ์์ ์ ํ๋ฐฉ์ ํ๋ ๋ฐฉ๋ฒ์ด๋ค. ์ด๊ฑธ ์ ํด์ผํ๋๋ฉด, ์ฌ์ฉํ๊ณ ์ถ์ library ํ๋ก์ ํธ์์ ์ฌ์ฉ์ค์ธ custom view์ custom attribute ๋ฅผ ์๋ ํ๋ก์ ํธ์์ ์ด๋ฏธ ์ฌ์ฉ์ค์ด๋ผ๋ฉด ์๋ ํ๋ก์ ํธ์ custom attribute๋ฅผ ๋ฐ๊พธ๋ ์ ๋ฐ์ ์๊ธฐ ๋๋ฌธ์ด๋ค.
IntelliJ ์๋ structural search and replace ๋ผ๋ ๋ฉ์ง ๊ธฐ๋ฅ์ด ์๋ค. ๋ง ๋ช ๋ น์ด ์ฐพ์์ try { } catch ๋ก ๊ฐ์ธ๋ ๋ฑ์ ๋ง์ ์ ๋ถ๋ฆด ์ ์๋ ๋๊ตฌ์ด๋ค. ๋คํํ java ๋ฟ ์๋๋ผ xml ์ปจํ ์คํธ๋ ์ ๊ณตํ๋ค. ๋ฑ ํ๋ ๋ฌธ์ ๊ฐ ์๋๋ฐ, ์ฌ์ฉํ๊ธฐ๊ฐ ๋งค์ฐ๋งค์ฐ ๋ณต์กํด. ใ ใ
๋ด๊ฐ ํ๊ณ ์ถ์ ๊ฒ์ & ๋ณํ ์์ ์ ๋ค์๊ณผ ๊ฐ๋ค.
tag ์ค mytag ๋ฅผ ์ฐพ๋๋ค.
์ด ์ค ์์ชฝ namespace ๋ณ์นญ์ ๋ถ๋ฌธํ๊ณ ํน์ ์์ฑ์ ์ฐพ๋๋ค (ex. my:title or myns:title )
์ด์ namespace ๋ณ์นญ์ ์ ์งํ๊ณ ์ ์์ฑ ์ด๋ฆ๋ง ๋ฐ๊ฟ๋๋๋ค. ์์ฑ๊ฐ๋ ๊ทธ๋๋ก ์ ์งํ๋ค. (ex. my:title="abc" -> my:myTitle="abc", myns:title="anc" -> myns:myTitle="abc")
๋ณ๋ก ์ด๋ ค์๋ณด์ด์ง ์์ง๋ง ์ดํ๋์ ์ฝ์ง์ ํ๋ค. -_-;; ์์์ ์ผ๋ก ํ์ด๋ ์ด๋ฏธ ํ๊ฒ ์ง๋ง ์ด๋์ ๊ฐ๋ฐ์๋ณ ๋๋ฌธ์ ๋ฐฉ๋ฒ์ ์ฐพ์๋ด๋๋ผ ๊ณ ์์ ํ๋ค.
๊ฒฐ๋ก ๋ถํฐ ๋งํ๋ฉด
search template: <$tag$ $attr$="$val$"/>
replace template: $result$
Edit variables... ๋ฅผ ๋๋ฅด๋ฉด ๋์ค๋ ๋ํ์์์๋
tag: Text/regexp ์ mytag ์ ๋ ฅ, min ๊ณผ max count ๋ชจ๋ 1๋ก ์ค์
attr: .*:title ์ ๋ ฅ, min ์ 1, max ๋ unlimited๋ก ์ค์ , ๋งจ ๋ฐ์ target of the search ์ฒดํฌ
val: min ์ 1, max ๋ unliimited๋ก ์ค์
result: Script text๋ฅผ ๋ค์๊ณผ ๊ฐ์ด ์ ๋ ฅ __context__.namespacePrefix + ":myTitle=\""+ __context__.value+"\""
๋ค๋ฅธ ์กฐํฉ๋ ๊ฐ๋ฅํ์ง ๋ชจ๋ฅด๊ฒ ์ง๋ง, ์ด๋ฏธ ๋๋ฌด ์ง์ณ์ ์๊ณ ์ถ์ง ์๋ค.
์ __context__ ๊ฐ ๋์ฒด ๋ญ๊ฐ๋ ์ ๋ค๋ฆฐ ๊ตฌ๊ธ๋ง์ผ๋ก XmlAttributeImpl๋ผ๋ ๊ฑธ ์ฐพ์๋๋ค. ๊ทธ๋ฌ๋ ๋ค๋ฅธ ์์ฑ์ ์ฌ์ฉํ๊ณ ์ถ๋ค๋ฉด ์ ์ฝ๋์์ ์์ฑ์ชฝ์ ์ฐพ์๋ณด์ธ์.
์, ์ด์ ๊ฒ์์ ๋๋ฅด๋ฉด ๊ฒ์ ๋ชฉ๋ก์ ์ด์๊ฒ xml ์ค ์์ฑ ์ด๋ฆ๋ค์ด ๋์ค๊ณ , "Preview Replacement" ๋ฅผ ๋๋ฅด๋ฉด namespace prefix๊ฐ ์ด์๊ฒ ๋ฐํ ๊ฒฐ๊ณผ๋ฌผ์ด ๋ณด์ผ๊ฒ์ด๋ค.
์ผํธ!
์ฐธ๊ณ ๋ก structural search๋ ๊ฝค ๋๋ฆฌ๊ธฐ ๋๋ฌธ์ ํฐ ํ๋ก์ ํธ๋ผ๋ฉด ์ฐพ๊ณ ์ถ์ ํ์ผ๋ค์ scope๋ฅผ ์ ์กฐ์ ํด๋๊ธธ ๊ถํ๋ค.










