<p>我以前的回答还不完整。这是一个认为应该是好的。在</p>
<pre><code>import sys
import socket
import os
from xml.dom.minidom import Document, parse, parseString, Node
class mapDataClass:
def __init__(self):
self.XMLdoc = Document()
self.MakeRootNode()
def MakeRootNode(self):
self.RootNode = self.XMLdoc.createElement('Map')
self.XMLdoc.appendChild(self.RootNode)
def GetXML_Doc(self):
return self.XMLdoc
def LoadXMLFile(self, AbsFileName):
try:
self.XMLdoc.unlink()
self.XMLdoc = parse(AbsFileName)
if (self.XMLdoc.hasChildNodes()): #if not empty
if (cmp(self.XMLdoc.firstChild.nodeName,
'Map') == 0):
self.RootNode = self.XMLdoc.firstChild
return True
except IOError:
print 'File ' + AbsFileName + ' not found'
return False
def GetMapData(self):
result = ""
result1 = ""
result2 = ""
haha = self.XMLdoc.firstChild #root node
for child in haha.childNodes:
if child.nodeType == Node.ELEMENT_NODE:
if cmp(child.nodeName, 'LandmarkPointListXml')<>0 and cmp(child.nodeName, 'RegionPointListXml')<>0:
if cmp(child.nodeName, 'URL')==0:
result = result + child.firstChild.nodeValue
else:
result = result + child.firstChild.nodeValue + ','
elif cmp(child.nodeName, 'LandmarkPointListXml')==0:
if child.firstChild is not None:
result1 = self.loopLandmark(child)
else:
result1 = 'EMPTY|'
elif cmp(child.nodeName, 'RegionPointListXml')==0:
if child.firstChild is None:
result2 = 'EMPTY'
result = result + "|" + result1 + result2
return result
def loopLandmark(self,landmarks):
result2=""
tempResult=""
haha=landmarks.getElementsByTagName('anyType')
for i in range(0, len(haha)):
result2=self.loopAnyType(haha[i])
if ((i+1)!=len(haha)):
tempResult = tempResult + result2 + ';'
else:
tempResult = tempResult + result2 + '|'
return tempResult
def loopAnyType(self,anyType):
result3=""
haha1=anyType.getElementsByTagName('LandmarkPointX')[0]
haha2=anyType.getElementsByTagName('LandmarkPointY')[0]
haha3=anyType.getElementsByTagName('LandmarkDesc')[0]
result3 = haha1.firstChild.nodeValue + "," + haha2.firstChild.nodeValue + "," + haha3.firstChild.nodeValue
return result3
data = mapDataClass()
success = data.LoadXMLFile("upload\homeTest.m")
if success:
print "file loaded"
print data.GetMapData()
else:
print "no such file found"
</code></pre>