linq to xml - get rid of blank xmlns

后端 未结 3 1471
误落风尘
误落风尘 2021-01-19 22:23

I\'m trying to get rid of empty namespace tags in my xml file. All of the solutions i\'ve seen are based creating the xml from scratch. I have various xelements constructed

相关标签:
3条回答
  • 2021-01-19 22:41

    I think the second answer down on this post:

    XElement Add function adds xmlns="" to the XElement

    was very useful. Basically if you just do

    XNamespace rootNamespace = doc.Root.Name.NamespaceName;
    XElement referenceElement = new XElement(rootNamespace + "Reference");
    

    That should solve it. So I guess you have to tell it not to worry about a special namespace when you are creating the element. Odd.

    0 讨论(0)
  • 2021-01-19 22:45

    Possibly it's this: Empty namespace using Linq Xml

    This would indicate your document is in a different default namespace than the elements you add.

    0 讨论(0)
  • 2021-01-19 23:00

    There's a post on MSDN blogs that shows how to get around this (reasonably) easily. Before outputing the XML, you'll want to execute this code:

    foreach (XElement e in root.DescendantsAndSelf())
    {
        if (e.Name.Namespace == string.Empty)
        {
            e.Name = ns + e.Name.LocalName;
        }
    }
    

    The alternative, as the poster mentions, is prefixing every element name with the namespace as you add it, but this seems like a nicer solution in that it's more automated and saves a bit of typing.

    0 讨论(0)
提交回复
热议问题