]> git.proxmox.com Git - mirror_edk2.git/blobdiff - Tools/Python/XmlRoutines.py
Add a program to install fars.
[mirror_edk2.git] / Tools / Python / XmlRoutines.py
index 53f5aa8f6157057b24cdf4d965923be3859d6c0e..0345f4acc645bc6fc533a0c3aa2aa3c682dbff5b 100755 (executable)
@@ -16,12 +16,12 @@ import xml.dom.minidom
 
 def XmlList(Dom, String):
   """Get a list of XML Elements using XPath style syntax."""
+  if String == "" :
+    return []
   if Dom.nodeType==Dom.DOCUMENT_NODE:
     return XmlList(Dom.documentElement, String)
   if String[0] == "/":
     return XmlList(Dom, String[1:])
-  if String == "" :
-    return []
   TagList = String.split('/')
   nodes = []
   if Dom.nodeType == Dom.ELEMENT_NODE and Dom.tagName.strip() == TagList[0]:
@@ -33,6 +33,14 @@ def XmlList(Dom, String):
         nodes = nodes + XmlList(child, restOfPath)
   return nodes
 
+def XmlNode (Dom, String):
+  """Return a single node that matches the String which is XPath style syntax."""
+  try:
+    return XmlList (Dom, String)[0]
+  except:
+    return None
+
+
 def XmlElement (Dom, String):
   """Return a single element that matches the String which is XPath style syntax."""
   try:
@@ -88,6 +96,19 @@ def XmlParseFileSection (FileName, Tag):
   except:
     return xml.dom.minidom.parseString('<empty/>')
 
+def XmlParseStringSection (XmlString, Tag):
+  """Parse a section of an XML string into a DOM(Document Object Model) and return the DOM."""
+  Start = '<' + Tag
+  End = '</' + Tag + '>'
+  File = XmlString
+  if File.find(Start) < 0 or File.find(End) < 0:
+    return xml.dom.minidom.parseString('<empty/>')
+  File = File[File.find(Start):File.find(End)+len(End)]
+  try:
+    return xml.dom.minidom.parseString(File)
+  except:
+    return xml.dom.minidom.parseString('<empty/>')
+
 def XmlSaveFile (Dom, FileName, Encoding='UTF-8'):
   """Save a DOM(Document Object Model) into an XML file."""
   try: