Xmloxide: AI 에이전트 지원으로 생성된 libxml2의 Rust 재구현

✍️ OpenClawRadar📅 게시일: March 1, 2026🔗 Source
Xmloxide: AI 에이전트 지원으로 생성된 libxml2의 Rust 재구현
Ad

Xmloxide란 무엇인가요?

Xmloxide는 XML 및 HTML 문서를 파싱, 생성, 조작하는 데 널리 사용되는 C 라이브러리인 libxml2를 순수 Rust로 재구현한 프로젝트입니다. 이 프로젝트는 2025년 12월에 공식적으로 유지 관리가 중단되고 알려진 보안 문제가 발생한 libxml2 이후에 만들어졌습니다. 개발자는 Claude Code를 사용하여 AI 에이전트가 기존 테스트 스위트를 통과할 때까지 작업하도록 하여 라이브러리를 재현했습니다.

주요 기능 및 능력

  • 메모리 안전 — 공개 API에서 안전하지 않은 코드 없이 아레나 기반 트리 제공
  • 표준 준수 — W3C XML 적합성 테스트 스위트 100% 통과율 (1727/1727 적용 가능 테스트)
  • 오류 복구 — 손상된 XML을 파싱하고 여전히 사용 가능한 트리 생성 (libxml2와 동일)
  • 다중 파싱 API — DOM 트리, SAX2 스트리밍, XmlReader 풀, 푸시/증분 파싱
  • HTML 파서 — 오류 허용 HTML 4.01 파싱, 자동 닫기 및 빈 요소 지원
  • XPath 1.0 — 모든 핵심 함수를 포함한 완전한 표현식 파서 및 평가기
  • 검증 — DTD, RelaxNG, XML 스키마(XSD) 검증
  • 정규 XML — C14N 1.0 및 배타적 C14N 직렬화
  • XInclude — 문서 포함 처리
  • XML 카탈로그 — URI 해결을 위한 OASIS XML 카탈로그
  • xmllint CLI — XML 파싱, 검증, 쿼리를 위한 명령줄 도구
  • 가능한 경우 제로 카피 — 빠른 비교를 위한 문자열 인터닝
  • 전역 상태 없음 — 각 문서는 자체 포함되어 있으며 Send + Sync 지원
  • C/C++ FFI — C/C++ 프로젝트에 내장하기 위한 헤더 파일(include/xmloxide.h)을 포함한 완전한 C API
  • 최소 의존성 — encoding_rs만 사용 (라이브러리는 다른 의존성 없음; clap은 CLI 전용)

성능 및 호환성

대부분의 파싱 작업에서 libxml2와 유사한 성능을 보이며 직렬화에서는 더 나은 성능을 제공합니다. 이 라이브러리는 호환성 스위트와 W3C XML 적합성 테스트 스위트를 모두 통과합니다.

Ad

코드 예제

기본 파싱:

use xmloxide::Document;

let doc = Document::parse_str("<root><child>Hello</child></root>").unwrap(); let root = doc.root_element().unwrap(); assert_eq!(doc.node_name(root), Some("root")); assert_eq!(doc.text_content(root), "Hello");

직렬화:

use xmloxide::Document;
use xmloxide::serial::serialize;

let doc = Document::parse_str("<root><child>Hello</child></root>").unwrap(); let xml = serialize(&doc); assert_eq!(xml, "<root><child>Hello</child></root>");

XPath 쿼리:

use xmloxide::Document;
use xmloxide::xpath::{evaluate, XPathValue};

let doc = Document::parse_str("<library><book><title>Rust</title></book></library>").unwrap(); let root = doc.root_element().unwrap(); let result = evaluate(&doc, root, "count(book)").unwrap(); assert_eq!(result.to_number(), 1.0);

SAX2 스트리밍:

use xmloxide::sax::{parse_sax, SaxHandler, DefaultHandler};
use xmloxide::parser::ParseOptions;

struct MyHandler;

impl SaxHandler for MyHandler { fn start_element(&mut self, name: &str, _: Option<&str>, _: Option<&str>, _: &[(String, String, Option<String>, Option<String>)]) { println!("Element: {name}"); } }

parse_sax("<root><child/></root>", &ParseOptions::default(), &mut MyHandler).unwrap();

HTML 파싱:

use xmloxide::html::parse_html;

let doc = parse_html("<p>Hello <br> World").unwrap(); let root = doc.root_element().unwrap(); assert_eq!(doc.node_name(root), Some("html"));

오류 복구:

use xmloxide::parser::{parse_str_with_options, ParseOptions};

let opts = ParseOptions::default().recover(true); let doc = parse_str_with_options("<root><unclosed>", &opts).unwrap(); for diag in &doc.diagnostics { eprintln!("{}", diag); }

CLI 사용법

xmllint CLI 도구는 다음을 제공합니다:

# 파싱 및 예쁘게 출력
xmllint --format document.xml

스키마에 대해 검증

xmllint --schema schema.xsd document.xml xmllint --relaxng schema.rng document.xml xmllint --dtdvalid

AI 에이전트 개발 배경

개발자는 libxml2를 대상으로 하기 전에 Claude Code를 사용하여 Redis와 SQLite를 재현하는 실험을 했습니다. 이 접근 방식은 AI 에이전트가 기존 테스트 스위트를 통과할 때까지 프로젝트 작업을 수행하도록 하는 것을 포함했습니다. 이는 코딩 에이전트가 테스트 스위트가 주어지면 빠르게 반복 작업을 수행하여 레거시 코드 유지 관리 문제를 해결할 수 있는 방법을 보여줍니다.

📖 전체 소스 읽기: HN AI Agents

Ad

👀 See Also

Models.dev: AI 모델 사양, 가격 및 기능에 대한 오픈소스 데이터베이스
Tools

Models.dev: AI 모델 사양, 가격 및 기능에 대한 오픈소스 데이터베이스

Models.dev는 AI 모델 사양, 가격 및 기능에 대한 오픈소스 커뮤니티 기여 데이터베이스입니다. API와 TOML 기반 정의를 제공합니다.

OpenClawRadar
패티나: AI 작성 패턴을 감지하고 재작성하는 Claude 코드 스킬
Tools

패티나: AI 작성 패턴을 감지하고 재작성하는 Claude 코드 스킬

한 개발자가 Claude Code 스킬인 patina를 만들어 AI 생성 텍스트를 네 가지 언어에서 명백하게 만드는 112가지 패턴을 식별한 후, 플래그가 지정된 부분을 다시 작성합니다. 이 도구는 탐지 전용, 점수 부여, 반복적 재작성 모드를 포함합니다.

OpenClawRadar
Claude Code v2.1.139, 비동기 장기 실행 작업을 위한 /goal 명령어 추가
Tools

Claude Code v2.1.139, 비동기 장기 실행 작업을 위한 /goal 명령어 추가

Claude Code v2.1.139에 /goal 명령어가 도입되어 완료 조건이 충족될 때까지 실행되는 파이어 앤 포겟 세션과 활성 세션을 모니터링할 수 있는 새로운 에이전트 보기가 추가되었습니다.

OpenClawRadar
MCP + 스킬 프레임워크: 효율적인 데이터 과학 워크플로우를 위한 AI 에이전트 안내
Tools

MCP + 스킬 프레임워크: 효율적인 데이터 과학 워크플로우를 위한 AI 에이전트 안내

MCP 서버 + 스킬 프레임워크를 사용하여 Claude/GPT 에이전트가 플랫폼을 인식하고 효율적인 데이터 과학 워크플로를 수행하도록 제한하는 실용적인 접근 방식입니다. 클라이언트 중심 코드와 불필요한 데이터 이동을 피합니다.

OpenClawRadar