Comment puis-je écrire xml avec un espace de noms et le préfixe avec XElement?

voix
19

Cela peut être une question xml débutant, mais comment puis-je générer un document XML qui ressemble à ce qui suit?

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

Si je peux obtenir ce à écrire, je peux obtenir le reste de mon problème à travailler.

Idéalement, je voudrais utiliser LINQ pour XML (XElement, XNamespace, etc.) avec c #, mais si cela peut être accompli plus facile / mieux avec xmldocuments et XmlElements, je partirais avec cela.

Merci!!!

Créé 27/08/2009 à 03:12
source utilisateur
Dans d'autres langues...                            


5 réponses

voix
39

Voici un petit exemple qui crée la sortie que vous voulez:

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"));
    }
}
Créé 27/08/2009 à 03:24
source utilisateur

voix
2

Essayez ce code:

string prefix = element.GetPrefixOfNamespace(element.Name.NamespaceName);
string name = String.Format(prefix == null ? "{1}" : "{0}:{1}", prefix, element.Name.LocalName);`
Créé 29/03/2014 à 07:45
source utilisateur

Créé 27/08/2009 à 03:18
source utilisateur

voix
-1

Pour XmlDocument il est similaire:

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);
Créé 20/05/2013 à 21:46
source utilisateur

voix
-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);

Cette sortie devrait

<root xmlns:ci="http://somewhere.com" xmlns:ca="http://somewhereelse.com">
    <ci:field1>test</ci:field1>
    <ca:field2>another test</ca:field2>
</root>
Créé 27/08/2009 à 03:27
source utilisateur

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