Jak mohu psát XML s namespace prefix a s XElement?

hlasů
19

To může být začátečník xml otázka, ale jak mohu vytvářet xml dokument, který vypadá následovně?

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

Když se mi podaří dostat, aby to bylo napsáno, můžu dostat zbytek mého problému pracovat.

V ideálním případě bych chtěl použít LINQ to XML (XElement, XNamespace, atd.) V jazyce C #, ale pokud to lze provést jednodušší / lepší s XMLDocuments a XmlElements, já bych šel s tím.

Dík!!!

Položena 27/08/2009 v 03:12
zdroj uživatelem
V jiných jazycích...                            


5 odpovědí

hlasů
39

Zde je malý příklad, který vytváří výstup, který chcete:

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"));
    }
}
Odpovězeno 27/08/2009 v 03:24
zdroj uživatelem

hlasů
2

Zkuste tento kód:

string prefix = element.GetPrefixOfNamespace(element.Name.NamespaceName);
string name = String.Format(prefix == null ? "{1}" : "{0}:{1}", prefix, element.Name.LocalName);`
Odpovězeno 29/03/2014 v 07:45
zdroj uživatelem

hlasů
0

Doufám, že budete mít nějaké užitečné informace z tohoto vlákna - XElement default namespace atributů poskytuje neočekávané chování

UPRAVIT:

Další FAQ na - http://social.msdn.microsoft.com/Forums/en-US/xmlandnetfx/thread/c0648840-e389-49be-a3d2-4d5db17b8ddd

Odpovězeno 27/08/2009 v 03:18
zdroj uživatelem

hlasů
-1

Pro XmlDocument je to podobné:

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);
Odpovězeno 20/05/2013 v 21:46
zdroj uživatelem

hlasů
-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);

To by mělo výstup

<root xmlns:ci="http://somewhere.com" xmlns:ca="http://somewhereelse.com">
    <ci:field1>test</ci:field1>
    <ca:field2>another test</ca:field2>
</root>
Odpovězeno 27/08/2009 v 03:27
zdroj uživatelem

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