]> git.proxmox.com Git - mirror_edk2.git/blobdiff - Tools/Python/XmlRoutines.py
Add dependency checking to the Far install.
[mirror_edk2.git] / Tools / Python / XmlRoutines.py
index 53f5aa8f6157057b24cdf4d965923be3859d6c0e..1757ea019cf289ae0a8dfd2b2d1a06080e465bff 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:
@@ -65,6 +73,13 @@ def XmlParseFile (FileName):
   except:
     return xml.dom.minidom.parseString('<empty/>')
 
+def XmlParseString (Str):
+  """Parse an XML string into a DOM and return the DOM."""
+  try:
+    return xml.dom.minidom.parseString(Str)
+  except:
+    return xml.dom.minidom.parseString('<empty/>')
+
 def XmlParseFileSection (FileName, Tag):
   """Parse a section of an XML file into a DOM(Document Object Model) and return the DOM."""
   try:
@@ -88,6 +103,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: