Python을 사용하여 XML 파일 콘텐츠를 찾고 업데이트하는 방법

아카시 라 토르

예를 들면

 <managedObject class="New" distName="MB-85404/TB-85404/ST-4/a" version="xL20A_1911_002" operation="open">
          <p name="a">320ms</p>
          <p name="b">enabled</p>
          <p name="c">640ms</p>
          <p name="d">320ms</p>
          <p name="e">640ms</p>
          <p name="f">1280ms</p>
          <p name="g">6</p>
    </managedObject>
<managedObject class="new" distName="AL-76867/MB-85404/TB-85404/ST-4/b" version="xL20A_1911_002" operation="open">
          <p name="h">320ms</p>
          <p name="i">enabled</p>
          <p name="j">640ms</p>
          <p name="k">320ms</p>
          <p name="l">640ms</p>
          <p name="a">1280ms</p>
          <p name="l">6</p>
    </managedObject>
<managedObject class="New" distName="MB-85404/TB-85404/ST-4/c" version="xL20A_1911_002" operation="open">
          <p name="a">320ms</p>
          <p name="p">enabled</p>
          <p name="q">640ms</p>
          <p name="r">320ms</p>
          <p name="s">640ms</p>
          <p name="t">1280ms</p>
          <p name="u">6</p>
    </managedObject>

다음은이 예에서 첫 번째 I는 업데이트 할 (distName="MB-85404/TB-85404/ST-4/[a or b or c]")(distName="MB-85409/TB-85409/ST-4/[a or b or c]")

전체 XML 파일에이 작업을 수행 한 후.

이 일 후에 내가 태그의 값을 업데이트 할 name="a"를 들어<managedObject class="New" distName="MB-85409/TB-85409/ST-4/[a or b or c] >

어떻게 할 수 있습니까? 40000 줄 이상의 XML 파일이 있습니다.

편집 1

with open("C:/files/abcd.xml", "w+") as file:
    xml_data = file.read()
    xml_data.replace("85409","85904")
    file.write("outPuta.xml")

EDIT2

soup = bs(content,"xml")
    loc = re.compile(r'[A-Z]+-+[0-9]+/+SMOD+-+[1-9]')
    for i in soup.find_all('managedObject', distName=loc):
        locat=i.find('p',{'name':'moduleLocation'})
        locat.string="3444 South texas"

이 코드로 나는 distname일치 하는 것을 찾으려고 regex loc하고 내부 managedObject에서 태그를 찾으려고 <p name="moduleLocation" 4444 New York>하고 업데이트 "4444 New York"하고 "3444 South texas"싶습니다. 아래에서 언급 한 오류가 발생합니다.

locat.string="3444 South texas"
AttributeError: 'NoneType' object has no attribute 'string'
안드레이 케 슬리

귀하의 질문을 올바르게 이해했기를 바랍니다. 그러면 모든 distName="MB-85404/TB-85404/ST-4/[a or b or c]"태그 를 찾아서 태그를 대체 하고 업데이트 할 것 85404입니다 .85409<p name="a">

import re
from bs4 import BeautifulSoup


xml_data = ''' <managedObject class="New" distName="MB-85404/TB-85404/ST-4/a" version="xL20A_1911_002" operation="open">
          <p name="a">320ms</p>
          <p name="b">enabled</p>
          <p name="c">640ms</p>
          <p name="d">320ms</p>
          <p name="e">640ms</p>
          <p name="f">1280ms</p>
          <p name="g">6</p>
    </managedObject>
<managedObject class="new" distName="AL-76867/MB-85404/TB-85404/ST-4/b" version="xL20A_1911_002" operation="open">
          <p name="h">320ms</p>
          <p name="i">enabled</p>
          <p name="j">640ms</p>
          <p name="k">320ms</p>
          <p name="l">640ms</p>
          <p name="a">1280ms</p>
          <p name="l">6</p>
    </managedObject>
<managedObject class="New" distName="MB-85404/TB-85404/ST-4/c" version="xL20A_1911_002" operation="open">
          <p name="a">320ms</p>
          <p name="p">enabled</p>
          <p name="q">640ms</p>
          <p name="r">320ms</p>
          <p name="s">640ms</p>
          <p name="t">1280ms</p>
          <p name="u">6</p>
    </managedObject>'''

soup = BeautifulSoup('<data>' + xml_data + '</data>', 'xml')

r = re.compile(r'^MB-85404/TB-85404/ST-4/(?:a|b|c)')

for o in soup.find_all('managedObject', distName=r):
    o['distName'] = o['distName'].replace('85404', '85409')
    p = o.find('p', {'name':'a'})
    p.string = 'UPDATED ' + p.string

soup.data.unwrap()
print(soup)

인쇄물:

<?xml version="1.0" encoding="utf-8"?>
 <managedObject class="New" distName="MB-85409/TB-85409/ST-4/a" operation="open" version="xL20A_1911_002">
<p name="a">UPDATED 320ms</p>
<p name="b">enabled</p>
<p name="c">640ms</p>
<p name="d">320ms</p>
<p name="e">640ms</p>
<p name="f">1280ms</p>
<p name="g">6</p>
</managedObject>
<managedObject class="new" distName="AL-76867/MB-85404/TB-85404/ST-4/b" operation="open" version="xL20A_1911_002">
<p name="h">320ms</p>
<p name="i">enabled</p>
<p name="j">640ms</p>
<p name="k">320ms</p>
<p name="l">640ms</p>
<p name="a">1280ms</p>
<p name="l">6</p>
</managedObject>
<managedObject class="New" distName="MB-85409/TB-85409/ST-4/c" operation="open" version="xL20A_1911_002">
<p name="a">UPDATED 320ms</p>
<p name="p">enabled</p>
<p name="q">640ms</p>
<p name="r">320ms</p>
<p name="s">640ms</p>
<p name="t">1280ms</p>
<p name="u">6</p>
</managedObject>

편집 : 모든에서 변경하려면 다음 85404수행 할 수 있습니다.85409distName=

for o in soup.find_all('managedObject', {'distName': True}):
    o['distName'] = o['distName'].replace('85404', '85409')

EDIT2 : 전체 파일을 바꾸려면 :

with open("C:/files/abcd.xml", "r") as f_in:
    xml_data = f_in.read()

with open("C:/files/output.xml", "w") as f_out:
    f_out.write(xml_data.replace("85409","85904"))

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

PowerShell을 사용하여 파일 콘텐츠를 변환하는 방법

분류에서Dev

이전 콘텐츠를 지우지 않고 txt 파일을 여는 방법

분류에서Dev

XML 데이터의 일부를 삭제하고 Python을 사용하여 새 파일에 쓰는 방법

분류에서Dev

FileOutputStream을 사용하지 않고 SAF로 파일 콘텐츠를 추가하는 방법

분류에서Dev

C ++ / CLI를 사용하여 노드의 주어진 내용을 찾고 xml 파일을 수정하는 방법

분류에서Dev

.html 파일을 업데이트하여 배치의 xml 파일에서 div 콘텐츠를 추가합니다.

분류에서Dev

JAXB를 사용하여 혼합 된 태그 (속성이 있고 중첩 된 태그가있는 콘텐츠 값이 있음)를 포함하는 XML 파일을 비 정렬 화하는 방법은 무엇입니까?

분류에서Dev

PHP를 사용하여 xml 파일을 업데이트하는 방법은 무엇입니까?

분류에서Dev

C #을 사용하여 xml 파일을 업데이트하는 방법

분류에서Dev

대용량 파일에서 콘텐츠를 찾는 방법

분류에서Dev

Python을 사용하여 압축을 풀지 않고 (압축 된 형식으로) zip 파일 콘텐츠를 읽는 방법

분류에서Dev

Python Pandas 데이터 프레임을 사용하여 XML 파일에서 속성을 업데이트하고 추가하는 방법

분류에서Dev

Abdera atom 클라이언트를 사용하여 콘텐츠 및 첨부 파일을 보내는 방법

분류에서Dev

Abdera atom 클라이언트를 사용하여 콘텐츠 및 첨부 파일을 보내는 방법

분류에서Dev

소켓 채널을 사용하여 파일 이름 및 파일 콘텐츠를 보내는 방법

분류에서Dev

C #을 사용하여 요소의 특성에 따라 XML 파일의 콘텐츠 업데이트

분류에서Dev

rpm 파일에서 콘텐츠를 읽고 파일 권한을 표시하는 방법

분류에서Dev

spark (scala)를 사용하여 동일한 파일을 읽고 쓰는 방법 (업데이트)

분류에서Dev

PowerShell을 사용하여 확장하지 않고 .cab 파일 콘텐츠의 크기를 아는 방법은 무엇입니까?

분류에서Dev

파일에서 새 콘텐츠를보고 해당 콘텐츠를 검색하는 방법

분류에서Dev

Java를 사용하여 (altchunk 콘텐츠)가있는 2007 Docx 파일을 PDF로 변환하는 방법

분류에서Dev

xml 파일에서 정보를 선택하고 업데이트하는 방법

분류에서Dev

CGI Perl을 사용하여 HTML 테이블에서 XML 콘텐츠를 렌더링하는 방법

분류에서Dev

이메일을 통해 콘텐츠를 게시하고 업로드하는 방법은 무엇입니까?

분류에서Dev

PowerShell을 사용하여 Excel의 다른 행에 파일 콘텐츠를 쓰는 방법

분류에서Dev

xhrdav (WebDav) : JavaScript를 사용하여 파일에서 콘텐츠를 읽는 방법

분류에서Dev

스프링 통합 메일을 사용하여 이메일 콘텐츠로드를 피하는 방법

분류에서Dev

Python을 사용하여 조건에 따라 XML 파일 (name_spaces 포함)에서 요소를 찾고 제거하는 방법

분류에서Dev

여러 작은 파일의 콘텐츠 (줄)를 하나의 큰 파일의 콘텐츠 (줄)와 (효율적으로) 일치시키고 업데이트 / 다시 만들 수있는 방법

Related 관련 기사

  1. 1

    PowerShell을 사용하여 파일 콘텐츠를 변환하는 방법

  2. 2

    이전 콘텐츠를 지우지 않고 txt 파일을 여는 방법

  3. 3

    XML 데이터의 일부를 삭제하고 Python을 사용하여 새 파일에 쓰는 방법

  4. 4

    FileOutputStream을 사용하지 않고 SAF로 파일 콘텐츠를 추가하는 방법

  5. 5

    C ++ / CLI를 사용하여 노드의 주어진 내용을 찾고 xml 파일을 수정하는 방법

  6. 6

    .html 파일을 업데이트하여 배치의 xml 파일에서 div 콘텐츠를 추가합니다.

  7. 7

    JAXB를 사용하여 혼합 된 태그 (속성이 있고 중첩 된 태그가있는 콘텐츠 값이 있음)를 포함하는 XML 파일을 비 정렬 화하는 방법은 무엇입니까?

  8. 8

    PHP를 사용하여 xml 파일을 업데이트하는 방법은 무엇입니까?

  9. 9

    C #을 사용하여 xml 파일을 업데이트하는 방법

  10. 10

    대용량 파일에서 콘텐츠를 찾는 방법

  11. 11

    Python을 사용하여 압축을 풀지 않고 (압축 된 형식으로) zip 파일 콘텐츠를 읽는 방법

  12. 12

    Python Pandas 데이터 프레임을 사용하여 XML 파일에서 속성을 업데이트하고 추가하는 방법

  13. 13

    Abdera atom 클라이언트를 사용하여 콘텐츠 및 첨부 파일을 보내는 방법

  14. 14

    Abdera atom 클라이언트를 사용하여 콘텐츠 및 첨부 파일을 보내는 방법

  15. 15

    소켓 채널을 사용하여 파일 이름 및 파일 콘텐츠를 보내는 방법

  16. 16

    C #을 사용하여 요소의 특성에 따라 XML 파일의 콘텐츠 업데이트

  17. 17

    rpm 파일에서 콘텐츠를 읽고 파일 권한을 표시하는 방법

  18. 18

    spark (scala)를 사용하여 동일한 파일을 읽고 쓰는 방법 (업데이트)

  19. 19

    PowerShell을 사용하여 확장하지 않고 .cab 파일 콘텐츠의 크기를 아는 방법은 무엇입니까?

  20. 20

    파일에서 새 콘텐츠를보고 해당 콘텐츠를 검색하는 방법

  21. 21

    Java를 사용하여 (altchunk 콘텐츠)가있는 2007 Docx 파일을 PDF로 변환하는 방법

  22. 22

    xml 파일에서 정보를 선택하고 업데이트하는 방법

  23. 23

    CGI Perl을 사용하여 HTML 테이블에서 XML 콘텐츠를 렌더링하는 방법

  24. 24

    이메일을 통해 콘텐츠를 게시하고 업로드하는 방법은 무엇입니까?

  25. 25

    PowerShell을 사용하여 Excel의 다른 행에 파일 콘텐츠를 쓰는 방법

  26. 26

    xhrdav (WebDav) : JavaScript를 사용하여 파일에서 콘텐츠를 읽는 방법

  27. 27

    스프링 통합 메일을 사용하여 이메일 콘텐츠로드를 피하는 방법

  28. 28

    Python을 사용하여 조건에 따라 XML 파일 (name_spaces 포함)에서 요소를 찾고 제거하는 방법

  29. 29

    여러 작은 파일의 콘텐츠 (줄)를 하나의 큰 파일의 콘텐츠 (줄)와 (효율적으로) 일치시키고 업데이트 / 다시 만들 수있는 방법

뜨겁다태그

보관