xml parser..

익명 사용자의 이미지


xml parser를 짜라는 명령을 받았습니다.. -.-; 전 학생이구요..

xml은 하나도 모르고, parser란 개념은 어렴풋이 알고 있을 뿐입니다.

근데 공개된 소스가 꽤 되더군요.. 아마 c++로 짜야할텐데..

apache나 MS, 등등에서 만든 XML parser가 있더군요.. apache소스는 받아
서 보았고.. 또 다른 간단한 소스가 있기도 합니다.

그 소스를 보면
XMLParse, XMLGetFirstChild, XMLGetFirstAttribute 등등의 함수가 있군
요..

근데 parser가 해야할 역할이 정확히 어디서 어디까지인지 모호합니다.

위와 같은 함수들만 짜면 되는건가요?

제 생각에...

html의 경우를 예를 들면 실제로 html 태그들을 파싱해서 화면에 나타내
야 할텐데..

html 파서도 위와 같은 간단한 함수들만 있고, 실제로 파서의 함수들을 이
용해서 html파일을 파싱한 후 화면에 나타내는건 어플리케이션(익스플로
러, 모질라)의 몫인 것 같은데..(물론 파서도 저 프로그램에 내장되어 있
겠지만..)

맞게 이해한 건지요?

parser가 책임져야 할 부분이 어디서 어디까지인지 잘 모르겠네요..

여러 곳에서 XML parser를 만들었던데.. XML 규격은 표준이 딱 정해져 있
잖아요.. 그렇다면 parser에서 공통적으로 꼭 구현해야 할 부분이나 함수
가 있을 것 같은데..

익명 사용자의 이미지

안녕하세요...

이거라면... DOM과 SAX를 한 번 찾아 보세요...
그러면은 아주 많이 도움이 될 것 같군요...

_ 信

익명 사용자의 이미지

XML은 관련 라이브러리를 권해 드리고 싶고요

하지만 만약에 직접 파서를 만들 경우라면
파서가 텍스트를 해석한 후에 "스택" 또는 "트리"로 자료를 재구성하는데
까지 합니다. 파서의 리턴값은 스택이나 트리의 시작 주소가 되겠지요.

그 다음에 "출력"을 할지 "변환"을 할지는 용도에 맞게 쓰시면 됩니다.

<예> main() { p = xml_parser("filename"); xml_print(p); return; }

파서 함수는 재귀호출에 의해 동작하므로 내부는 복잡하지만
main 함수쪽에서 보면 굉장히 간단하죠.

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.