繁体   English   中英

XDocument xmlns url 属性持续到子节点

[英]XDocument xmlns url attributes persist to child nodes

基于此 SO 解决方案,将相同的命名空间添加到您的子节点将防止创建空的xmlns=""属性。 我没有得到空属性,而是将根中的相同 xmlns 复制到子节点。

我当前的输出:

<Root xmlns="http://my.namespace">     
     <FirstElement xmlns="http://my.namespace"/> 
</Root>

预期输出:

<Root xmlns="http://my.namespace">     
     <FirstElement/> 
</Root>

分享我的代码:


        private XDocument CreateRootTag()
        {
            XNamespace xmlns = XNamespace.Get("http://my.namespace");
            var xdec = new XDeclaration("1.0", "utf-8", "yes");
            XDocument xml = new XDocument(
                    xdec,
                    new XElement(
                        xmlns + "Root",
                        new XAttribute("version", "1.0"),
                        CreateFirstElementTag()));  // <--- adding child node containing duplicate xmlns as root

            return xml;
        }



        private XElement CreateFirstElementTag()
        {
            XNamespace xmlns = XNamespace.Get("http://my.namespace");
            XElement firstElementTag = new XElement(xmlns + "FirstElement","hello");
            return firstElementTag;
        }


如何防止在子节点中保留xmlns="my.namespace"属性?

请让我知道,如果你有任何问题。 谢谢。

我按如下方式运行您的代码。 并且没有遇到任何问题。

C#

void Main()
{
    XDocument xdoc = CreateRootTag();
    Console.WriteLine(xdoc);
}

private XDocument CreateRootTag()
{
    XNamespace xmlns = XNamespace.Get("http://my.namespace");
    var xdec = new XDeclaration("1.0", "utf-8", "yes");
    XDocument xml = new XDocument(
            xdec,
            new XElement(
                xmlns + "Root",
                new XAttribute("version", "1.0"),
                CreateFirstElementTag()));  // <--- adding child node containing duplicate xmlns as root

    return xml;
}

private XElement CreateFirstElementTag()
{
    XNamespace xmlns = XNamespace.Get("http://my.namespace");
    XElement firstElementTag = new XElement(xmlns + "FirstElement", "hello");
    return firstElementTag;
}

输出

<Root version="1.0" xmlns="http://my.namespace">
  <FirstElement>hello</FirstElement>
</Root>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM