디렉터리를 다운로드했는데 디렉터리가 XML 형식입니다. 코드에서 사람이 읽을 수 있는 형식으로 어떻게 변경하고 가급적이면 일반 텍스트 파일로 저장합니까? 나는 이전에 이것을 일하거나 본 적이 없습니다. 비슷한 일을 위해 여기에서 권장되는 xslproc를 사용해 보았지만 작동하지 못했습니다. XML(들여쓰기/색상/등)로 올바르게 형식화하는 textWrangler에 성공적으로 로드했지만 내용을 인쇄하기 위해 실제로 "실행"하는 방법을 모르겠습니다. 엑셀, 워드, 메모장도 시도해 보았지만 결국 오류가 발생했습니다.
아직 명확하지 않은 경우 다음과 같은 것이 있습니다.
<TD>51.9029244701</TD>
<TD>47.0082067303</TD>
나는 다음과 같은 것을 원합니다 :
51.9029244701
47.0082067303
이 디렉터리의 정보가 포함된 텍스트 파일을 만들고 싶습니다.
답변1
여기에 늦은 답변이 있습니다: Ubuntu 저장소에는 xmlto
도움이 될 수 있는 매우 훌륭한 유틸리티가 있습니다. xml을 일반 텍스트, epub, pdf를 포함한 여러 형식으로 변환합니다.
사용 가능한 온라인오크 차고그중에는 많은 변환 옵션이 있습니다.
답변2
나는 xml 파일을 읽고 그 내용을 다른 파일로 출력하는 매우 간단한 Python 스크립트를 작성했습니다.
import sys
inFile = open(sys.argv[1], 'r')
outFile = open(sys.argv[2], 'w')
read = True
for i in inFile.read():
if i == '<':
read = not read
if read:
outFile.write(i)
if i == '>':
read = not read
readxml.py로 저장하고 다음과 같이 셸에서 호출하세요 $ python readxml.py input.xml output.txt
. 정말 초보적인 내용이므로 원하는 내용이 아닐 수도 있지만 뭔가 중요한 내용입니다!
답변3
이 시도:
grep "<TD>" yourfile.xml | awk -F "TD" '{gsub(">|</","",$0); print $2;}'
출력은 다음과 같습니다:
51.9029244701
47.0082067303
grep
SelectXMLTD표시하다, awk
사용하다TD구분 기호로 사용하고 >
필드에서 및를 제거합니다.</
$2
모든 노드를 선택하려면 xslt 변환을 시도하십시오.
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="text" indent="yes"/>
<xsl:template match="node()">
<xsl:value-of select="." />
</xsl:template>
</xsl:stylesheet>
그러면 xml 파일에 있는 모든 노드의 내용이 출력됩니다.
답변4
실제로 생각보다 쉽습니다. XML 요소에는 이름, 속성, 하위 요소 및 "콘텐츠"라는 4가지 "사물"이 있습니다.
따라서 모든 콘텐츠 요소를 반복하고 해당 요소만 인쇄할 수 있습니다(개행 포함 또는 제외).
#!/usr/env/perl
use strict;
use warnings;
use XML::Twig;
my $twig = XML::Twig -> parsefile ( 'your_file');
print $_ -> text."\n" for grep { $_ -> is_pcdata } $twig -> get_xpath('//*');
그러면 모든 "콘텐츠"( pcdata
) 노드를 찾아 한 줄에 하나씩 인쇄합니다.
그러나 실제로 XML의 경우 "사람이 읽을 수 있음"이 중요합니다. 누가 읽을 수 있도록 예쁘게 인쇄하여 보관하면 어떨까요? 읽어도 그 과정에서 데이터가 손실되지 않습니다.
원하는 경우 다시 포맷할 수 있습니다.
$twig -> set_pretty_print ('indented_a');
$twig -> print;
이는 "사람이 읽을 수 있음"에 대한 좋은 근사치입니다.