Incomplete XML attribute

后端 未结 2 500
挽巷
挽巷 2021-01-20 03:14

I am creating XML out of Dataset by dataset.GetXML() method. I want to add attributes to it

            XmlAttribute attr = xmlObj.CreateAttri         


        
相关标签:
2条回答
  • 2021-01-20 03:53

    You need to specify the prefix separately, not as part of the name. There is no overload that takes just a prefix and the name, so you have to use the overload that also takes a namespace, and use null for the namespace:

    attr = xmlObj.CreateAttribute("xsi", "schemaLocation", null);
    
    0 讨论(0)
  • 2021-01-20 03:58

    The key here is that you need to tell the XmlWriter what namespaces to use and from there it will apply the correct prefixes.

    In the code below the second parameter in the SetAttribute method is the namespace uri specified for xmlns:xsi namespace. This lets the XmlWrite put in the right prefix.

    XmlDocument xmlObj = new XmlDocument();
    xmlObj.LoadXml("<root></root>");
    
    XmlElement e = xmlObj.DocumentElement;
    e.SetAttribute("xmlns:xsi", "http://www.createattribute.com");
    e.SetAttribute("schemaLocation", "http://www.createattribute.com", "http://www.createattribute.com/schema.xsd");
    

    Similar code using the syntax from your original question is:

    XmlDocument xmlObj = new XmlDocument();
    xmlObj.LoadXml("<root></root>");
    
    XmlAttribute attr = xmlObj.CreateAttribute("xmlns:xsi");            
    attr.Value = "http://www.createattribute.com"; 
    xmlObj.DocumentElement.Attributes.Append(attr);
    
    attr = xmlObj.CreateAttribute("schemaLocation", "http://www.createattribute.com"); 
    attr.Value = "http://www.createattribute.com/schema.xsd"; 
    xmlObj.DocumentElement.Attributes.Append(attr); 
    
    0 讨论(0)
提交回复
热议问题