如何使用“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 :(得分: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>