필터링 프로세스의 일부로 XML 문서에서 특정 태그를 제거하고 싶습니다. 그러나 XML의 모양이나 구조를 수정할 수는 없습니다.구조를 보존하면서 XML 필터링
입력 XML 문자열의 예로서 제공 :
<?xml version="1.0" encoding="UTF-8"?>
<main>
<mytag myattr="123"/>
<mytag myattr="456"/>
</main>
및 출력이 속성 값이 말하자면, 어디 mytag
을 제거하기 위해 필요, 456, • DIFF가 표시되어야합니다
<?xml version="1.0" encoding="UTF-8"?>
<main>
<mytag myattr="123"/>
</main>
제거 된 태그 만 입력 및 출력 간의 차이로.
SAX, StAX 및 JAXB를 조사했지만 이러한 API로 입력 한 형식과 동일한 형식으로 XML을 출력 할 수없는 것처럼 보입니다. 대신 적절한 들여 쓰기와 공백을 사용하여 잘 구성된 XML을 작성하며, 때로는 입력과의 차이점을 나타내는 것처럼 보일 것입니다.
내 현재 메서드는 정규식을 사용하지만 위의 XML을 구성하는 모든 가능한 방법을 고려하지 않으므로 매우 강력하지는 않습니다. 예를 들어, 속성 값과 일치합니다 : 이것은 위의 예에서 작동
myAttr\s*=\s*"([^"]*)"
을하지만,이 XML 태그 주어 작동하지 않습니다
<mytag myattr=
123></mytag>
정규식 정말이 상황에서 최선의 선택인가를 ?
XSLT를 살펴볼 것이지만 입력 XML의 구조를 보존 할 것입니다. 필자가 제시 한 예제는 형식이 잘 맞았지만 샘플 XML이 모두 한 줄에 있다고 상상해보십시오. 출력도 모두 한 줄로 표시됩니까? –
@Alex Spurling : XML은 전적으로 직렬화 형식이 아니라 데이터와 관련이 있어야합니다. 왜 당신에게 중요한가? – Tomalak
그는 비 XML 인식 diff 도구를 사용하기 때문에. –