Reputation: 2183
Please view following XML namespace and schemaLocation.
<agr:ABWInvoice
xsi:schemaLocation = "
http://services.agresso.com/schema/ABWInvoice/2011/11/14
http://services.agresso.com/schema/ABWInvoice/2011/11/14/ABWInvoice.xsd"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:agrlib = "http://services.agresso.com/schema/ABWSchemaLib/2011/11/14"
xmlns:agr = "http://services.agresso.com/schema/ABWInvoice/2011/11/14"
>
</agr:ABWInvoice>
I have added namespaces in following way, which seems working fine:
XmlSerializerNamespaces ns = new XmlSerializerNamespaces();
ns.Add("xsi", "http://www.w3.org/2001/XMLSchema-instance");
ns.Add("agrlib", "http://services.agresso.com/schema/ABWSchemaLib/2011/11/14");
ns.Add("agr", "http://services.agresso.com/schema/ABWInvoice/2011/11/14");
But, how to add following schemalocation? Any ideas?
xsi:schemaLocation="http://services.agresso.com/schema/ABWInvoice/2011/11/14 http://services.agresso.com/schema/ABWInvoice/2011/11/14/ABWInvoice.xsd"
Upvotes: 5
Views: 14009
Reputation: 7044
xsi:schemaLocation="..."
is not a namespace declaration: it's an attribute (whose value happens to be a namespace, but never mind that). So you would add it with a method that sets an attribute value. I'm not familiar with the C# XML API, but it's probably something like this:
XmlElement.SetAttributeValue (localname, prefix, namespace, value)
localname
should be "schemaLocation"
prefix
= "xsi"
namespace
= "http://www.w3.org/2001/XMLSchema-instance"
value
= "your schema location"
Upvotes: 7
Reputation: 1056
For me the accepted answer did not work, but this did work:
var schema = new XmlSchema();
schema.Namespaces.Add("xmlns", "urn:oasis:names:specification:ubl:schema:xsd:OrderResponse-2");
var doc = new XmlDocument();
doc.Schemas.Add(schema);
var rootElement = doc.CreateElement("MyRoot");
rootElement.SetAttribute("xmlns", "urn:oasis:names:specification:ubl:schema:xsd:OrderResponse-2");
rootElement.SetAttribute("xmlns:xsi", "http://www.w3.org/2001/XMLSchema-instance");
rootElement.SetAttribute("schemaLocation", "http://www.w3.org/2001/XMLSchema-instance", "urn:oasis:names:specification:ubl:schema:xsd:OrderResponse-2 file:///C:/DIGITALCAB/DigiTaxi/schema/OIOUBL/maindoc/UBL-OrderResponse-2.0.xsd");
Upvotes: 0
Reputation: 529
Just add this code in your class
public partial class MyClass{
[XmlAttribute(Namespace = System.Xml.Schema.XmlSchema.InstanceNamespace)]
public string schemaLocation = "http://www.adap.cx/m3/x4 lksdjv45.xsd";
... }
Upvotes: 1
Reputation: 2183
The reply of Mike lead me to get following answer:
[XmlAttributeAttribute("schemaLocation", AttributeName = "schemaLocation",
Namespace = "http://www.w3.org/2001/XMLSchema-instance")]
public string SchemaLocation = "http://services.agresso.com/schema/ABWInvoice/2011/11/14 http://services.agresso.com/schema/ABWInvoice/2011/11/14/ABWInvoice.xsd";
Upvotes: 7