문제

가끔 XML 파일에서 임의의 데이터를 신속하게 추출하여 CSV 형식으로 만들어야합니다.Unix 터미널에서이를 수행하는 가장 좋은 방법은 무엇입니까?몇 가지 코드 예제를 좋아합니다. 예를 들어 다음 문제를 어떻게 해결할 수 있습니까?

XML 입력 예 : 라코 디스

원하는 CSV 출력 : 라코 디스

도움이 되었습니까?

해결책

요소의 이름 속성 만 원하는 경우 빠르고 불완전한 해결책이 있습니다.

(예제 텍스트는 example 파일에 있습니다.) <인용구>

grep "이름"예 |잘라 내기 -d "\" "-f2,2 |xargs -I {} echo "{},"

다른 팁

피터의 대답 은 정확하지만 후행 줄 바꿈을 출력합니다. 라코 디스

예 : 실행 라코 디스

CSV 결과를 표준 출력으로 생성합니다.

xsltproc , saxon 또는 xalan 을 사용하여 구문 분석XML을 생성하고 CSV를 생성합니다.다음은 스타일 시트 인 입니다. 라코 디스

XMLStarlet은 쿼리 / 편집 / 확인 / 변환을위한 명령 줄 툴킷입니다. XML 문서 (자세한 내용은 http://xmlstar.sourceforge.net/ 참조)

쓸 파일이 없습니다. 파일을 xmlstarlet으로 파이프하고 xpath 필터를 적용하면됩니다. 라코 디스

-m 표현식 -v 값 ''포함 된 리터럴 -n 개행

따라서 xpath의 경우 xpath 표현식은 // myel / @ name이됩니다. 두 속성 값을 제공합니다.

매우 편리한 도구

여기에 질문이 묻는 것을 정확하게 수행하는 작은 루비 스크립트가 있습니다 ( 'myel'이라는 요소에서 'name'이라는 속성을 가져옴).일반화하기 쉬워야합니다. 라코 디스

xml 파일이 다음을 포함하는 "test.xml"이라고 가정하고 원래 질문에 답합니다.

<root> <myel name="Foo" /> <myel name="Bar" /> </root> 라코 디스

테스트 파일은 test.xml에 있습니다. 라코 디스

함정이 있습니다. 예를 들어 각 myel 이 한 줄에 있다고 엄격하게 지정되지 않은 경우 먼저 xml 파일을 "정규화"해야합니다 (따라서 각 myel 은 한 줄에 표시됨)

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top