public static void UpdateManifest(string fullPath) {
			_document = new XmlDocument();
			_document.Load(fullPath);
			
			if (_document == null)
			{
				Debug.LogError("Couldn't load " + fullPath);
				return;
			}

			_manifestNode = FindChildNode(_document, "manifest");
			_namespace = _manifestNode.GetNamespaceOfPrefix("android");
			_applicationNode = FindChildNode(_manifestNode, "application");
			
			if (_applicationNode == null) {
				Debug.LogError("Error parsing " + fullPath);
				return;
			}

			SetPermission("android.permission.INTERNET");

			XmlElement applicationElement = FindChildElement(_manifestNode, "application");
			applicationElement.SetAttribute("name", _namespace, "com.soomla.SoomlaApp");


			foreach(ISoomlaManifestTools manifestTool in ManTools) {
				manifestTool.UpdateManifest();
			}
			
			_document.Save(fullPath);
		}
Exemplo n.º 2
0
 /// <summary>
 /// 添加节点属性
 /// </summary>
 /// <param name="xDoc">XmlDocument对象</param>
 /// <param name="node">节点对象</param>
 /// <param name="namespaceOfPrefix">该节点的命名空间URI</param>
 /// <param name="attributeName">新属性名称</param>
 /// <param name="attributeValue">属性值</param>
 public static void AddAttribute(XmlDocument xDoc, XmlNode node, string namespaceOfPrefix, string attributeName, string attributeValue)
 {
     string ns = namespaceOfPrefix == null ? null : node.GetNamespaceOfPrefix(namespaceOfPrefix);
     XmlNode xn = xDoc.CreateNode(XmlNodeType.Attribute, attributeName, ns == "" ? null : ns);
     xn.Value = attributeValue;
     node.Attributes.SetNamedItem(xn);
 }
		private static void LoadManifest(){
			_document = new XmlDocument();
			_document.Load(outputFile);
			
			if (_document == null)
			{
				Debug.LogError("Couldn't load " + outputFile);
				return;
			}
			
			_manifestNode = FindChildNode(_document, "manifest");
			_namespace = _manifestNode.GetNamespaceOfPrefix("android");
			_applicationNode = FindChildNode(_manifestNode, "application");
			
			if (_applicationNode == null) {
				Debug.LogError("Error parsing " + outputFile);
				return;
			}
		}
Exemplo n.º 4
0
 private static void FindTargetSchemaNode(XmlNode document, XmlNamespaceManager xmlNamespaceManager, XmlNode node, XmlNode thisSchemaNode, string rawTypeName, out XmlNode targetSchemaNode, out TypeReference typeReference)
 {
     string[] typeParts = rawTypeName.Split(':');
     string typeName;
     string typeTargetNamespace;
     if (typeParts.Length == 2)
     {
         typeTargetNamespace = node.GetNamespaceOfPrefix(typeParts[0]);
         typeName = typeParts[1];
         XmlNodeList targetSchemaNodes = document.SelectNodes(".//xs:schema[@targetNamespace='" + typeTargetNamespace + "']", xmlNamespaceManager);
         targetSchemaNode = targetSchemaNodes[0];
     }
     else if (typeParts.Length == 1)
     {
         typeTargetNamespace = thisSchemaNode.Attributes.GetNamedItem("targetNamespace").Value;
         typeName = typeParts[0];
         targetSchemaNode = thisSchemaNode;
     }
     else
     {
         throw new InvalidOperationException("Could not find target schema node for type " + rawTypeName + ".");
     }
     typeReference = new TypeReference(typeTargetNamespace, typeName);
 }
Exemplo n.º 5
0
        public static string FindUnusedPrefix(XmlNode node, string prefixHint)
        {
            string pp = prefixHint;
            if (prefixHint == null || prefixHint.Length == 0)
                pp = "n";
            else
            {
                string uri = node.GetNamespaceOfPrefix(pp);
                if (uri == null || uri.Length == 0)
                    return pp;
            }

            int n = 1;
            while (true)
            {
                string s = string.Format(pp+"{0}", n++);
                string uri = node.GetNamespaceOfPrefix(s);
                if (uri == null || uri.Length == 0)
                    return s;
            }
        }
Exemplo n.º 6
0
        public static Altova.Types.QName CastToQName(XmlNode node, MemberInfo member)
        {
            int i = node.InnerText.IndexOf(":");
            if (i == -1)
                return new Altova.Types.QName(node.GetNamespaceOfPrefix(""), node.InnerText);

            string prefix = node.InnerText.Substring(0, i);
            string local = node.InnerText.Substring(i + 1);

            string uri = node.GetNamespaceOfPrefix(prefix);

            return new Altova.Types.QName(uri, prefix, local);
        }
		// Namespace Axis
		// Consider a list L containing only namespace nodes in the 
		// axis and in the node-set in lexicographic order (ascending). To begin 
		// processing L, if the first node is not the default namespace node (a node 
		// with no namespace URI and no local name), then generate a space followed 
		// by xmlns="" if and only if the following conditions are met:
		//    - the element E that owns the axis is in the node-set
		//    - The nearest ancestor element of E in the node-set has a default 
		//	    namespace node in the node-set (default namespace nodes always 
		//      have non-empty values in XPath)
		// The latter condition eliminates unnecessary occurrences of xmlns="" in 
		// the canonical form since an element only receives an xmlns="" if its 
		// default namespace is empty and if it has an immediate parent in the 
		// canonical form that has a non-empty default namespace. To finish 
		// processing  L, simply process every namespace node in L, except omit 
		// namespace node with local name xml, which defines the xml prefix, 
		// if its string value is http://www.w3.org/XML/1998/namespace.
		private void WriteNamespacesAxis (XmlNode node, bool visible)
		{
			// Console.WriteLine ("Debug: namespaces");

			XmlDocument doc = node.OwnerDocument;    
			bool has_empty_namespace = false;
			ArrayList list = new ArrayList ();
			for (XmlNode cur = node; cur != null && cur != doc; cur = cur.ParentNode) {
			        foreach (XmlNode attribute in cur.Attributes) {		
					if (!IsNamespaceNode (attribute)) 
			    			continue;
			    	
					// get namespace prefix
					string prefix = string.Empty;
					if (attribute.Prefix == "xmlns") 
						prefix = attribute.LocalName;
			    
				        // check if it is "xml" namespace			    
					if (prefix == "xml" && attribute.Value == "http://www.w3.org/XML/1998/namespace")
						continue;
			    
					// make sure that this is an active namespace
					// for our node
					string ns = node.GetNamespaceOfPrefix (prefix);
					if (ns != attribute.Value) 
						continue;
			    
					// check that it is selected with XPath
					if (!IsNodeVisible (attribute)) 
						continue;

					// check that we have not rendered it yet
					bool rendered = IsNamespaceRendered (prefix, attribute.Value);

					// add to the visible namespaces stack
					if (visible)
						visibleNamespaces.Add (attribute);			      
			    
					if (!rendered)
						list.Add (attribute);
				    
					if (prefix == string.Empty)
						has_empty_namespace = true;
				}
			}

			// add empty namespace if needed		    
			if (visible && !has_empty_namespace && !IsNamespaceRendered (string.Empty, string.Empty)) 
				res.Append (" xmlns=\"\"");
		    
			list.Sort (new XmlDsigC14NTransformNamespacesComparer ());
			foreach (object obj in list) {
				XmlNode attribute = (obj as XmlNode);
				if (attribute != null) {
					res.Append (" ");
					res.Append (attribute.Name);
					res.Append ("=\"");
					res.Append (attribute.Value);
					res.Append ("\"");
				}
			}
		    
			// move the rendered namespaces stack
			if (visible) {
				prevVisibleNamespacesStart = prevVisibleNamespacesEnd;
				prevVisibleNamespacesEnd = visibleNamespaces.Count;	
			}
		}
Exemplo n.º 8
0
        private static bool TryFindElementWithAndroidName(
            XmlNode parent,
            string attrNameValue,
            out XmlElement element,
            string elementType = "activity")
        {
            string ns = parent.GetNamespaceOfPrefix("android");
            var curr = parent.FirstChild;
            while (curr != null)
            {
                var currXmlElement = curr as XmlElement;
                if (currXmlElement != null &&
                    currXmlElement.Name == elementType &&
                    currXmlElement.GetAttribute("name", ns) == attrNameValue)
                {
                    element = currXmlElement;
                    return true;
                }

                curr = curr.NextSibling;
            }

            element = null;
            return false;
        }
Exemplo n.º 9
0
 /// <summary>
 /// 添加节点属性
 /// </summary>
 /// <param name="xDoc">XmlDocument对象</param>
 /// <param name="node">节点对象</param>
 /// <param name="namespaceOfPrefix">该节点的命名空间URI</param>
 /// <param name="attps">节点属性参数</param>
 public static void AddAttribute(XmlDocument xDoc, XmlNode node, string namespaceOfPrefix, params AttributeParameter[] attps)
 {
     string ns = namespaceOfPrefix == null ? null : node.GetNamespaceOfPrefix(namespaceOfPrefix);
     foreach (AttributeParameter attp in attps)
     {
         XmlNode xn = xDoc.CreateNode(XmlNodeType.Attribute, attp.Name, ns == "" ? null : ns);
         xn.Value = attp.Value;
         node.Attributes.SetNamedItem(xn);
     }
 }
Exemplo n.º 10
0
		void GetTypeQualifiedName (XmlNode node, string qualifiedName, out string name, out string ns)
		{
			int i = qualifiedName.IndexOf (':');
			if (i == -1)
			{
				name = qualifiedName;
				ns = "";
				return;
			}
			
			string prefix = qualifiedName.Substring (0,i);
			name = qualifiedName.Substring (i+1);
			ns = node.GetNamespaceOfPrefix (prefix);
			
			string arrayType = GetArrayType (node, name, ns);
			if (arrayType != null) {
				name = arrayType;
				ns = "";
			}
			else if (ns != MetaData.SchemaNamespace) {
				ns = DecodeNamespace (ns);
			}
			else {
				ns = "";
				name = GetClrFromXsd (name);
			}
		}
Exemplo n.º 11
0
 public static XmlName ParseName(XmlNode context, string name, XmlNodeType nt)
 {
     XmlName result = new XmlName();
     XmlConvert.VerifyName(name);
     int i = name.IndexOf(':');
     if (i>0){
         string prefix = result.Prefix = name.Substring(0,i);
         result.LocalName = name.Substring(i + 1);
         if (prefix == "xml") {
             result.NamespaceUri = XmlUri;
         } else if (prefix == "xmlns") {
             result.NamespaceUri = XmlnsUri;
         } else {
             result.NamespaceUri = context.GetNamespaceOfPrefix(prefix);
         }
     } else {
         result.Prefix = "";
         result.LocalName = name;
         if (name == "xmlns") {
             result.NamespaceUri = XmlnsUri;
         } else if (nt == XmlNodeType.Attribute) {
             result.NamespaceUri = ""; // non-prefixed attributes are empty namespace by definition
         } else {
             result.NamespaceUri = context.GetNamespaceOfPrefix("");
         }
     }
     return result;
 }
Exemplo n.º 12
0
 /// <summary>
 /// ����ָ���ڵ���ָ�����Ե�ֵ
 /// </summary>
 /// <param name="clsXmlNode">XML�ڵ�</param>
 /// <param name="szPrefix">���Ե�ǰ׺</param>
 /// <param name="szAttrName">������</param>
 /// <param name="szAttrValue">����ֵ</param>
 /// <returns>bool</returns>
 public static bool SetXmlAttrValue(XmlNode clsXmlNode, string szPrefix, string szAttrName, string szAttrValue)
 {
     if (clsXmlNode == null)
         return false;
     XmlDocument clsXmlDoc = clsXmlNode.OwnerDocument;
     if (clsXmlDoc == null)
         return false;
     if (szAttrName == null || szAttrName.Trim() == "")
         return false;
     if (szAttrValue == null)
         szAttrValue = string.Empty;
     try
     {
         XmlAttribute clsAttrNode = clsXmlNode.Attributes.GetNamedItem(szAttrName) as XmlAttribute;
         if (clsAttrNode == null)
         {
             string szNamespaceUri = null;
             if (szPrefix == "xmlns")
                 szNamespaceUri = "http://www.w3.org/2000/xmlns/";
             else if (!GlobalMethods.Misc.IsEmptyString(szPrefix))
                 szNamespaceUri = clsXmlNode.GetNamespaceOfPrefix(szPrefix);
             clsAttrNode = clsXmlDoc.CreateAttribute(szPrefix, szAttrName, szNamespaceUri);
             clsXmlNode.Attributes.Append(clsAttrNode);
         }
         clsAttrNode.InnerText = szAttrValue;
         return true;
     }
     catch (Exception ex)
     {
         LogManager.Instance.WriteLog("GlobalMethods.SetXmlAttrValue"
            , new string[] { "clsXmlNode", "szPrefix", "szAttrName", "szAttrValue" }
             , new object[] { clsXmlNode, szPrefix, szAttrName, szAttrValue }, "�޷�����XML�ڵ������ֵ!", ex);
         return false;
     }
 }