레이아웃을 보존하는 동안 XML을 변경하십시오
-
06-07-2019 - |
문제
XML 파일을 변경하는 데 무엇을 사용 하시겠습니까?
내 문제는 사용자 인터페이스를 설명하는 몇 가지 거대한 손으로 편집 한 XML-Files가 있다는 것입니다. 이제 몇 가지 속성을 다른 언어로 번역해야합니다.
Python + ElementTree를 사용 하여이 작업을 시도했지만 공백이나 의견을 보존하지 않았습니다.
XSLT가 비슷한 질문에 대해 제안되는 것을 보았지만 각 속성에 대해 논리와 조회를해야하기 때문에이 경우 대안이라고 생각하지 않습니다.
각 요소의 속성 순서가 보존되면 바람직하지만 변경된 순서를 견딜 수 있습니다.
해결책
모든 DOM 조작 모듈은 귀하의 요구에 적합해야합니다. 레이아웃은 단지 텍스트 데이터이므로 DOM의 텍스트 노드로 표시됩니다.
>>> from xml.dom.minidom import parseString
>>> dom = parseString('''\
... <message>
... <text>
... Hello!
... </text>
... </message>''')
>>> dom.childNodes[0].childNodes
[<DOM Text node "u'\n '">, <DOM Element: text at 0xb765782c>, <DOM Text node "u'\n'">]
>>> text = dom.getElementsByTagName('text')[0].childNodes[0]
>>> text.data = text.data.replace(u'Hello', u'Hello world')
>>> print dom.toxml()
<?xml version="1.0" ?><message>
<text>
Hello world!
</text>
</message>
다른 팁
XSLT 프로세서를 사용하는 경우 XT, 그런 다음 필요한 임의의 변환을 수행 할 수있는 Java에서 확장 방법을 작성할 수 있습니다.
그렇게 말하면서 나는 파이썬을 사용했습니다 XML.DOM.MINIDOM 이러한 종류의 변환을 위해 성공적으로 모듈. 그것은 공백과 레이아웃을 보존합니다.
제휴하지 않습니다 StackOverflow