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

PACT: 에이전트 실패 패턴 이후 클로드 코드를 위한 프로그램적 거버넌스 프레임워크
Tools

PACT: 에이전트 실패 패턴 이후 클로드 코드를 위한 프로그램적 거버넌스 프레임워크

한 개발자가 350개 이상의 파일로 구성된 모바일 앱에서 Claude Code의 반복적인 실패를 세 달간 겪은 후 PACT(Programmatic Agent Constraint Toolkit)를 구축했습니다. 이 프레임워크는 강제할 수 없는 규칙들을 사전 도구 사용 훅을 통해 위반을 물리적으로 차단하는 기계적 제약으로 대체합니다.

OpenClawRadar
멀티-오퍼레이터 클로드 코드: 멀티-에이전트 세션을 위한 허브 기반 아키텍처
Tools

멀티-오퍼레이터 클로드 코드: 멀티-에이전트 세션을 위한 허브 기반 아키텍처

Claude Code에 허브 기반 설정을 도입하면 여러 사람이 동일한 세션에 접속하고, 저장소 간에 하위 작업을 라우팅하며, Docker 컨테이너에서 헤드리스 에이전트를 실행할 수 있습니다.

OpenClawRadar
MuninnDB는 볼트 격리 기능을 갖춘 LLM 메모리 통합을 위해 Dream Engine을 추가합니다.
Tools

MuninnDB는 볼트 격리 기능을 갖춘 LLM 메모리 통합을 위해 Dream Engine을 추가합니다.

Go 기반 인지 메모리 데이터베이스인 MuninnDB가 이제 중복 제거 임계값과 의미론적 검토를 사용하여 세션 간 LLM 기반 메모리 통합을 수행하는 Dream Engine을 포함합니다. 이 시스템은 데이터 격리를 위한 볼트 신뢰 등급을 특징으로 하며 Ollama와 함께 로컬에서 실행됩니다.

OpenClawRadar
LLM 위원회 분석, 실용적인 클로드 코드 토큰 최적화 전략 공개
Tools

LLM 위원회 분석, 실용적인 클로드 코드 토큰 최적화 전략 공개

한 개발자가 5가지 페르소나를 활용한 LLM Council 도구로 Claude Code 사용 패턴을 분석한 결과, 기본적으로 설정된 확장 사고 모드가 가장 큰 토큰 소모 요인임을 확인했습니다. 결과적으로 구현된 플레이북은 동일하거나 더 나은 출력 품질을 유지하면서 60-70%의 토큰 절감을 달성했습니다.

OpenClawRadar