xml 파일을 구문 분석하는 데 사용되는 python 스크립트에 문제가 있습니다.Python : Xml 구문 분석 방법
file.xml
<Tag1 SchemaVersion="1.1" xmlns="http://www.microsoft.com/axe">
<RandomTag>TextText</RandomTag>
<Tag2 xmlns="http://schemas.datacontract.org/2004/07">
<AnotherRandom>Abc</AnotherRandom>
</Tag2>
</Tag1>
내가 방법을 구문 분석으로 xml.etree.ElementTree
을 사용하고 있습니다 : XML 파일입니다. 내 작업은 RandomTag
(이 경우 "TextText") 사이의 태그를 변경하는 것입니다. 이것은 파이썬 코드 : 코드가 잘 작동
파이썬 코드
import xml.etree.ElementTree as ET
customXmlFile = 'file.xml'
ns = {
'ns': 'http://www.microsoft.com/axe',
'sc': 'http://schemas.datacontract.org/2004/07/Microsoft.Assessments.Relax.ObjectModel_V1'
}
tree = ET.parse(customXmlFile)
root = tree.getroot()
node = root.find('ns:RandomTag', namespaces=ns)
node.text = 'NEW TEXT'
ET.register_namespace('', 'http://www.microsoft.com/axe')
tree.write(customXmlFile + ".new",
xml_declaration=True,
encoding='utf-8',
method="xml")
나는 시간 오류를 실행하지 않지만, 모든 네임 스페이스 AnotherRandom
에서 첫 번째 노드 (TAG1)에서 정의하고 Tag2
은 shorcut으로 사용됩니다. 또한 SchemaVersion이 삭제됩니다. file.xml.new
- 출력
<?xml version='1.0' encoding='utf-8'?>
<Tag1 xmlns="http://www.microsoft.com/axe" xmlns:ns1="http://schemas.datacontract.org/2004/07" SchemaVersion="1.1">
<RandomTag>NEW TEXT</RandomTag>
<ns1:Tag2>
<ns1:AnotherRandom>Abc</ns1:AnotherRandom>
</ns1:Tag2>
</Tag1>
file.xml.new - 원하는 나는 beggining에에서로 정확한 XML의 동일한 형식을 얻기 위해 변경해야합니까 출력
<Tag1 SchemaVersion="1.1" xmlns="http://www.microsoft.com/axe">
<RandomTag>TextText</RandomTag>
<Tag2 xmlns="http://schemas.datacontract.org/2004/07">
<AnotherRandom>NEW TEXT</AnotherRandom>
</Tag2>
</Tag1>
텍스트 만 바뀌 었습니까?
XML 파일 몇 가지 문제가 있습니다. 코드에 따라 코드가 출력됩니다. 문제를 진단하는 데 도움이되는 오타를 수정할 수 있다면. 전체 작업 코드를 게시하십시오. 예를 들어, ns 사전은 등호가 아닌 콜론을 사용해야합니다. 물론 닫는 Tag1에는 슬래시가 있어야합니다. –
나는이 두 가지 문제를 해결했습니다. 큰 XML 코드이므로 전체 XML 코드를 복사 할 수 없습니다. 주로 구조는이 코드와 동일하며 파이썬 코드는 질문에 표시된 것과 같습니다. –
또한 find() 호출에서 네임 스페이스가 아닌 네임 스페이스가 있어야한다고 생각합니다. 오타가 더 이상 없습니까? 수입품은 어떨까요? 복사/붙여 넣기가 작동 코드 여야한다는 것을 확실히 알아야합니다. 또한 어떤 Python 버전을 사용하고 있습니까? –