>

데이터를 다음 형식으로 분리하는 방법을 알고 싶습니다 :

<datas>
 <data>
  <name>Name1</name>
 </data>
 <data>
  <name>Name2</name>
 </data>
</datas>

다음 형식으로 :

<data><name>Name1</name></data>
<data><name>Name2</name></data>

구문 분석 된 데이터는 다음과 같이 Python 스크립트로 전송됩니다 :

python script.py <data><name>Name1<name></data>
 python script.py <data><name>Name2<name></data>

나는 다음과 같은 명령을 시도했다 :

echo 'cat /datas/data' | xmllint --shell file.xml

그러나 원하는 형식의 출력을 파이썬 스크립트에 어떻게 전달할 수 있습니까?


  • 답변 # 1

    XMLStarlet으로 데이터를 전처리 할 것입니다 :

    $ xml sel -t -c '/datas/data' -nl data.xml
    <data>
      <name>Name1</name>
     </data><data>
      <name>Name2</name>
     </data>
    
    

    그러면 파이썬 스크립트가이 데이터를 읽는 방법에 따라 다릅니다. 파일이나 표준 입력에서 온 것이기를 바랍니다.

  • 답변 # 2

    xslt를 사용합니다.

    xslt 스타일 시트는 다음과 같습니다

    <?xml version="1.0" encoding="UTF-8"?>
    <xsl:stylesheet version="1.0"
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:template match="/datas">
      <xsl:apply-templates select="data"/>
    </xsl:template>
    <xsl:template match="data">
      <data><name><xsl:value-of select="./name"/></name></data><xsl:text>&#xa;</xsl:text>
    </xsl:template>
    </xsl:stylesheet>
    
    

    변환을 위해서는 xsltproc 프로그램을 사용하십시오.

    입력 파일의 이름이 .xml로되어 있습니다

    xslt 스타일 시트의 이름은 xsl입니다

    그러면 전화는

    xsltproc in.xsl in.xml
    
    

    출력 :

    <?xml version="1.0"?>
    <data><name>Name1</name></data>
    <data><name>Name2</name></data>
    
    

관련 자료

  • 이전 working directory - mv 경로 - 내 파일은 어디로 갑니까?
  • 다음 process - 주어진 PID가 실행 중인지 어떻게 확인해야합니까?