2015-11-26 123 views
0

我有問題需要空值空格。我想更換type="open"/>testvalue="0"價值,改變類型:XML用空值替換空格

 <test testvalue="0">Something3</test> 
     <test testvalue="1" type="done">Hallo2</test> 
     <test testvalue="2" type="done">Hallo2</test> 
     <test testvalue="3" type="open"/> 
     <test testvalue="4" type="open"/> 

結果應該是這樣的:

 <test testvalue="0">Something</test> 
     <test testvalue="1" type="done">Hallo</test> 
     <test testvalue="2" type="done">Hallo</test> 
     <test testvalue="3" type="done">Something</test> 
     <test testvalue="4" type="done">Something</test> 

有沒有一種可能的方式通過搜索testvalue="0"做獲得的價值並用type="done">"(0 value)</test>代替type="open"/>

+2

有是一些用於在Python中解析XML的好庫,你可以看看[這裏](/ questions/1912434/how-do-i-parse-xml-in-python)。一旦你解析了它,你就可以知道如何設置值並將其重寫爲XML文件。 – SuperBiasedMan

+0

@SuperBiasedMan IMVHO你應該移動你的評論來回答,這很好。 –

回答

0

假設您使用的是System.XML,並且有一種讀取 XML文件的方法。您需要指定節點測試,如

'XmlNodeList testValues = new XmlNodeList("/test");' 

這將返回列表中的所有測試節點。 然後通過執行

'testValues[numberOfNodeInList].InnerText = "What you want to put here ";' 

注意選擇要覆蓋的:你必須初始化XML文檔ü要閱讀,

'XmlDocument xml = new XmlDocument();' 
    'xml.load(path)' 

然後像我提到的使用,你可以得到的節點XmlNodeList或XmlNode。 請參閱此https://msdn.microsoft.com/en-us/library/system.xml(v=vs.110).aspx 以查看您可以使用system.xml執行的所有操作;

0

最簡單的方法是使用XML解析器,謝天謝地Python has one built in

您首先需要導入它,然後通過將它的路徑傳遞給解析器來解析文件。請注意,您需要一個根標籤來爲分析器創建此有效的XML。否則,你會得到錯誤:

ParseError: junk after document element: line 2, column 8 

很容易但是修改您的數據,只是在開始和結束添加root標籤。如有必要,可以通過編程來完成。

<root> 
     <test testvalue="0">Something3</test> 
     <test testvalue="1" type="done">Hallo2</test> 
     <test testvalue="2" type="done">Hallo2</test> 
     <test testvalue="3" type="open"/> 
     <test testvalue="4" type="open"/> 
</root> 

現在你可以用解析器簡單地分析它:

import xml.etree.ElementTree as ETree 
xml = ETree.parse(path) 

然後你就可以遍歷XML,如果element.text is None檢測,並將其寫入路徑:

for element in xml.getroot(): 
    if element.text is None: 
     element.text = "Something" 
xml.write(path)