Como criar XML contendo declarações de namespace e nomes prefixados com um XMLDocument?
-
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!
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