Quantcast
Channel: Questions in topic: "javascipt"
Viewing all articles
Browse latest Browse all 1875

Declaring XML Namespace at Runtime

$
0
0
Hi Unity Community! I’m trying to write a script to add nodes to an XML document at runtime however I am encountering issues when trying to define the name attribute of the new node; I would like to know how I can declare another namespace outside of the default XMLNS attribution (in my case *'name'*) to match the existing markup. I assume this is to do with the **XmlNameSpaceManager** but I am struggling to understand how to implement this (still pretty new to XML in Unity / uJS). Many thanks in advance, Ryan My code in its current state is: import System.Runtime.Serialization.Formatters.Binary; import System.IO; import System.Xml; public static var control : ObjInfoControl; public var doc : XmlDocument; public var root : XmlNode; public var nodeList : XmlNodeList; public var docNameSpace : XmlNamespaceManager; public var health : float; //test public var experience : float; //test public var objName : String; //imported object name public var fileName : String; //original file name public var objDescript : String; //user defined description of object public var initialObjName : String; //initial name of object chached on load function Start(){ //Automatically loads XML doc for save etc doc = new XmlDocument(); doc.Load(Application.dataPath + "/objMetaTest01.xml"); root = doc.DocumentElement; nodeList = root.SelectNodes("MetaPipeObject"); for (var i = 0; i < nodeList.Count; i++) { var node = nodeList[i]; } } public function CreateNewNode(){ //Creates new node for new objects //will be similar to the replace function to be written soon //Namespace Manager to add namespace to file //docNameSpace = new XmlNamespaceManager(doc.NameTable); //docNameSpace.AddNamespace("name", doc.DocumentElement.NamespaceURI); //select last MP node to add the new one behind var lastObjNode = root.SelectSingleNode("MetaPipeObject[last()]"); var newObjNode = doc.CreateElement("MetaPipeObject", "DogTest"); newObjNode.InnerXml = lastObjNode.InnerXml; //copy content root.InsertAfter(newObjNode, lastObjNode); //add to the bottom of the xml doc doc.Save(Application.dataPath + "/objMetaTest01.xml"); } The return I am currently producing: water_drop.objText to go here1010 I also tested the [three string][1] CreateElement() method with better but still not ideal results: water_drop.objText to go here1010 The result I am wanting: water_drop.objText to go here1010 [1]: https://msdn.microsoft.com/en-us/library/c22k3d47(v=vs.110).aspx

Viewing all articles
Browse latest Browse all 1875

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>