xmlのすべての内部ノードからxmlnsを削除する方法。私はルートノードからxmlnsを削除することができましたが、内部ノードはまだ内部ノードのすべてのxmlnsを持っています。p2を削除する:type = "<<type>" xmlns:p2 = "http://www.w3.org/2001/XMLSchema-instance"からxml
public class Program
{
public static void Main()
{
List<Person> students = new List<Person>();
Student std1 = new Student() { Name="Name1", StudentId = 1};
students.Add(std1);
Student std2 = new Student() { Name = "Name2", StudentId = 2 };
students.Add(std2);
string data = students.ToList().ToXML();
}
}
[System.Xml.Serialization.XmlInclude(typeof(Student))]
public class Person
{
public string Name { get; set; }
}
public class Student : Person
{
public int StudentId { get; set; }
}
ToXML()
public static string ToXML<T>(this T value)
{
if (value.IsNull()) return string.Empty;
var xmlSerializer = new XmlSerializer(typeof(T));
XmlSerializerNamespaces ns = new XmlSerializerNamespaces();
ns.Add("", "");
using (var stringWriter = new StringWriter())
{
using (var xmlWriter = XmlWriter.Create(stringWriter, new XmlWriterSettings { OmitXmlDeclaration = true, Indent = false }))
{
xmlSerializer.Serialize(xmlWriter, value, ns);
return stringWriter.ToString();
}
}
}
出力
<ArrayOfPerson>
<Person p2:type="Student" xmlns:p2="http://www.w3.org/2001/XMLSchema-instance">
<Name>Name1</Name>
<StudentId>1</StudentId>
</Person>
<Person p2:type="Student" xmlns:p2="http://www.w3.org/2001/XMLSchema-instance">
<Name>Name2</Name>
<StudentId>2</StudentId>
</Person>
</ArrayOfPerson>
の予想される出力は
<ArrayOfPerson>
<Person>
<Name>Name1</Name>
<StudentId>1</StudentId>
</Person>
<Person>
<Name>Name2</Name>
<StudentId>2</StudentId>
</Person>
</ArrayOfPerson>
を、あなたは 'NamespaceHandling'が'に設定したことがありますOmitDuplicates'? –
@AmitJoshiは役に立たなかった –