๊ธฐ์กด ํ ํ๋ฆฟ์ด(hml, hwp) ์๊ณ ํด๋น ํ ํ๋ฆฟ์ ๋ณํํ ๋๋ฅผ ๊ธฐ์ค์ผ๋ก ์ค๋ช ํ ๋ด์ฉ
์๋ฅผ ๋ค์ด ๋์๊ด ๋์ถ ๋ชฉ๋ก ๋ฆฌํฌํธ๋ผ๊ณ ํด๋ณด์.
ํ ํ๋ฆฟ์๋ ๋ฐ์ดํฐ ์์ ์์น์ ๋ง์ปค๋ฅผ ์ฝ์ ํด๋๋ค.
<CHAR>#BOOK_ROW#</CHAR>
ํด๋น ๋ง์ปค๋ ์ฑ์ ํ ํ ์์์ ๋ฐ์ดํฐ๊ฐ ์ฝ์ ๋ ์์ ์์น๋ฅผ ๋ํ๋ธ๋ค.
ํ ํ๋ฆฟ์ TABLE ํ๊ทธ๋ ๋ณดํต ๋ค์๊ณผ ๊ฐ์ด ๊ตฌ์ฑ๋์ด ์๋ค.
์ ํ๊ทธ๋ 3๋ฒ์งธ ROW์์ ์ฒซ๋ฒ์งธ CELL์ ๋ค์ด๊ฐ ์๋ ๋ด์ฉ์ด ๋ ๊ฒ์ด๋ค.
<TABLE RowCount="6" ColCount="4">
<ROW RowAddr="0">...</ROW> <!-- ์ ๋ชฉ -->
<ROW RowAddr="1">...</ROW> <!-- ํค๋ -->
<ROW RowAddr="2">...</ROW> <!-- ์ฒซ ๋ฒ์งธ ์ฑ
-->
<ROW RowAddr="3">...</ROW> <!-- ๋ ๋ฒ์งธ ์ฑ
-->
...
</TABLE>
๊ทธ๋ ๋ค๋ฉด ํต์ฌ ๋ก์ง์ ์ด๋ ๊ฒ ๋ ๊ฒ์ด๋ค.
- <CHAR>#BOOK_ROW#</CHAR> ๋ง์ปค๋ฅผ ๊ธฐ์ค์ผ๋ก <ROW> ๋ธ๋ญ์ ๋ณต์ฌ
- ๊ฐ <ROW> ๋ด๋ถ์ <TEXT> ํ๊ทธ๋ฅผ replaceALL๋ก ์์ฐจ ์นํ
- RowAddr๋ ๋ฐ๋์ ๊ฐ๊ฐ ๋ค๋ฅด๊ฒ ์ค์ ํด์ผ ํจ (2 + i)
- <TABLE> ํ๊ทธ ์ RowCount ๊ฐ๋ ๋ฐ๋์ ๊ฐฑ์ ํด์ผ ๋ฌธ์ ์์ ์๋จ
ํ ํ๋ฆฟ์ด ๊ฐ์ ๋ฌ๋ผ์ ์๋น์ค ๋ก์ง๊น์ง ์ค๋ช ํ๊ธด ์ด๋ ค์ธ ๊ฒ ๊ฐ๋ค ใ
๋ง์ผ #BOOK_ROW# ๊ฐ ํฌํจ๋ ๊ธฐ์ค ROW๋ฅผ ์ฐพ๋๋ค๋ฉด
String rowStartMarker = "#BOOK_ROW#";
String rowStartTag = "<CHAR>" + rowStartMarker + "</CHAR>";
int rowStartIndex = templateContent.indexOf(rowStartTag);
int rowTagStart = templateContent.lastIndexOf("<ROW", rowStartIndex);
int rowTagEnd = templateContent.indexOf("</ROW>", rowStartIndex) + "</ROW>".length();
String originalRow = templateContent.substring(rowTagStart, rowTagEnd);
์ด๋ฐ์์ผ๋ก ์ฐพ์ผ๋ฉด ๋๋ค.
์ ์์ ๊ฐ์ ๋ฃ์๋๋ ๊ธฐ๋ณธ ํ ํ๋ฆฟ ๊ตฌ์กฐ๋ฅผ ํ์ ํ ํ ์ ํํ๊ฒ ๋์ผํ ์์น์ ์นํํด์ฃผ์ง ์์ผ๋ฉด ์์๋ ํ์ผ์ด๋ ๊นจ์ง ํ์ผ์ด ๋๋ฒ๋ฆฌ๋ ์กฐ์ฌํด์ผ ํ๋ค.
RowAddr, RowCount ๊ฐ์ ์์ฑ๋ค์ด ์ค๋ณต๋๊ฑฐ๋ ๊ฐฏ์๊ฐ ๋ฌ๋ผ์ง์ง ์๋๋ก ์ฃผ์ํ์.
ํ ํ๋ฆฟ XML์ ๋ค๋ฃจ๋ฉด, HTML์ด๋ ์์ ์ฒ๋ผ ์์ฝ๊ฒ ํ ์คํธ ๋ฐ์ธ๋ฉ์ ์ด๋ ต์ง๋ง ๊ทธ๋งํผ ์์ ๋ ์๋ ์ ์ด๊ฐ ๊ฐ๋ฅํ๋ค.