Como posso escrever xml com um namespace e prefixo com XElement?

votos
19

Esta pode ser uma questão xml novato, mas como posso gerar um documento XML que se parece com o seguinte?

<root xmlns:ci=http://somewhere.com xmlns:ca=http://somewhereelse.com>
    <ci:field1>test</ci:field1>
    <ca:field2>another test</ca:field2>
</root>

Se eu conseguir isso para ser escrito, eu posso obter o resto do meu problema de trabalhar.

Idealmente, eu gostaria de usar LINQ to XML (XElement, XNamespace, etc.) com c #, mas se isso pode ser feito mais fácil / melhor com XMLDocuments e XmlElements, eu iria com isso.

Obrigado!!!

Publicado 27/08/2009 em 03:12
fonte usuário
Em outras línguas...                            


5 respostas

votos
39

Aqui está um pequeno exemplo que cria a saída que você deseja:

using System;
using System.Xml.Linq;

class Program
{
    static void Main()
    {
        XNamespace ci = "http://somewhere.com";
        XNamespace ca = "http://somewhereelse.com";

        XElement element = new XElement("root",
            new XAttribute(XNamespace.Xmlns + "ci", ci),
            new XAttribute(XNamespace.Xmlns + "ca", ca),
                new XElement(ci + "field1", "test"),
                new XElement(ca + "field2", "another test"));
    }
}
Respondeu 27/08/2009 em 03:24
fonte usuário

votos
2

Tente este código:

string prefix = element.GetPrefixOfNamespace(element.Name.NamespaceName);
string name = String.Format(prefix == null ? "{1}" : "{0}:{1}", prefix, element.Name.LocalName);`
Respondeu 29/03/2014 em 07:45
fonte usuário

Respondeu 27/08/2009 em 03:18
fonte usuário

votos
-1

Para XmlDocument é semelhante:

XmlAttribute attribute1 = sessionXml.CreateAttribute("s", "Attribute1", namespaceURI);
XmlAttribute attribute2 = sessionXml.CreateAttribute("s", "Attribute2", namespaceURI);
XmlAttribute attribute3 = sessionXml.CreateAttribute("s", "Attribute3", namespaceURI);
XmlAttribute attribute4 = sessionXml.CreateAttribute("s", "Attribute4", namespaceURI);
Respondeu 20/05/2013 em 21:46
fonte usuário

votos
-1
XNamespace ci = "http://somewhere.com";
XNamespace ca = "http://somewhereelse.com";
XElement root = new XElement(aw + "root",
    new XAttribute(XNamespace.Xmlns + "ci", "http://somewhere.com"),
    new XAttribute(XNamespace.Xmlns + "ca", "http://somewhereelse.com"),
    new XElement(ci + "field1", "test"),
    new XElement(ca + "field2", "another test")
);
Console.WriteLine(root);

Este deve saída

<root xmlns:ci="http://somewhere.com" xmlns:ca="http://somewhereelse.com">
    <ci:field1>test</ci:field1>
    <ca:field2>another test</ca:field2>
</root>
Respondeu 27/08/2009 em 03:27
fonte usuário

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more