Como criar XML contendo declarações de namespace e nomes prefixados com um XMLDocument?

StackOverflow https://stackoverflow.com/questions/1566746

  •  21-09-2019
  •  | 
  •  

Pergunta

Estou lutando para produzir o seguinte XML usando o objeto xmldocument no .NET. Alguma sugestão?

É isso que eu gostaria de produzir ...

<l:config
    xmlns:l="urn:LonminFRConfig"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="urn:LonminFRConfig lonminFRConfigSchema.xsd">

</l:config>

Os namespaces estão realmente me dando um tempo difícil!

Foi útil?

Solução

Experimente isso:

XmlDocument xmlDoc = new XmlDocument();
XmlNamespaceManager nsmgr = new XmlNamespaceManager(xmlDoc.NameTable);
nsmgr.AddNamespace("l", "urn:LonminFRConfig");
nsmgr.AddNamespace("xsi", "http://www.w3.org/2001/XMLSchema-instance");

XmlElement config = xmlDoc.CreateElement("l:config", nsmgr.LookupNamespace("l"));
XmlAttribute schemaLocation = xmlDoc.CreateAttribute(
    "xsi:schemaLocation", nsmgr.LookupNamespace("xsi"));
config.Attributes.Append(schemaLocation);
schemaLocation.Value = "urn:LonminFRConfig lonminFRConfigSchema.xsd";

xmlDoc.AppendChild(config);
xmlDoc.Save(Console.Out);

Boa sorte!

Outras dicas

Isso vai fazer isso.

const string lNS = "urn:lLominFRConfig";
const string xsiNS = "http://www.w3.org/2001/XMLSchema-instance";

var dom = new XmlDocument();

var configElem = dom.AppendChild(dom.CreateElement("l:config", lNS));

configElem.Attributes.Append(dom.CreateAttribute("xsi:schemaLocation", xsiNS))
    .Value = "urn:LonminFRConfig lonminFRConfigSchema.xsd";
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top