2010-05-04 43 views
0

添加子元素如何获得以下代码以添加带有“xmlns =''”的元素?C#CreateElement方法 - 如何使用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日,以为我固定了它,但今天再次咬住我!)

回答

0

糟糕 - 没关系。

我改变的XPath这样:

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

和它的工作。 这个想法是在与firstname相同的级别添加lastname,而不是在firstname下。

正确的期望输出真是这样的:

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