XML 파일의 의미 있는 인간 형식을 실제로 어떻게 읽습니까?

XML 파일의 의미 있는 인간 형식을 실제로 어떻게 읽습니까?

디렉터리를 다운로드했는데 디렉터리가 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

grepSelectXMLTD표시하다, 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;

이는 "사람이 읽을 수 있음"에 대한 좋은 근사치입니다.

관련 정보