C#CreateElement方法 - 如何使用xmlns =“”添加子元素

时间:2010-05-04 06:22:17

标签: c# xml xmldocument

如何使用“xmlns =''”添加以下代码?

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml; 

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            string strXML = 
                "<myroot>" + 
                "   <group3 xmlns='myGroup3SerializerStyle'>" + 
                "       <firstname xmlns=''>Neal3</firstname>" + 
                "   </group3>" + 
                "</myroot>";

            XmlDocument xmlDoc = new XmlDocument();
            xmlDoc.LoadXml(strXML);

            XmlElement elem = xmlDoc.CreateElement(null, "lastname", null);
            elem.InnerText = "New-Value";

            string strXPath = "/myroot/*[local-name()='group3' and namespace-uri()='myGroup3SerializerStyle']/firstname";
            XmlNode insertPoint = xmlDoc.SelectSingleNode(strXPath);
            insertPoint.AppendChild(elem);

            string resultOuter = xmlDoc.OuterXml;

            Console.WriteLine("\n resultOuter=" + resultOuter);

            Console.ReadLine(); 

        }
    }
}

我目前的输出:

 resultOuter=<myroot><group3 xmlns="myGroup3SerializerStyle"><firstname xmlns=""
>Neal3<lastname>New-Value</lastname></firstname></group3></myroot>

所需的输出:

 resultOuter=<myroot><group3 xmlns="myGroup3SerializerStyle"><firstname xmlns=""
>Neal3<lastname xmlns="">New-Value</lastname></firstname></group3></myroot>

有关背景信息,请参阅相关帖子: http://www.stylusstudio.com/ssdn/default.asp?fid=23(今天)

.NET XmlSerializer to Element FormDefault=Unqualified XML?(3月9日,我以为我已经修好了,但今天再次给我打电话!)

1 个答案:

答案 0 :(得分:0)

哎呀 - 没关系。

我将XPath改为:

string strXPath = "/myroot/*[local-name()='group3' and namespace-uri()='myGroup3SerializerStyle']";

它有效。 我们的想法是将lastname添加到与firstname相同的级别,而不是在firstname下。

正确的理想输出是这样的:

resultOuter=<myroot><group3 xmlns="myGroup3SerializerStyle"><firstname xmlns=""
>Neal3</firstname><lastname xmlns="">New-Value</lastname></group3></myroot>