Я считаю, что это даст вам желаемый результат. Возможно, это проще, так как это просто от манжеты, чтобы вы начали. С префиксами, которые вам требуются, я бы поискал XmlDocument и добавлял им пространства имен, чтобы лучше понять, что делает код ниже. Также я бы попытался получить файл схемы XSD и использовать XSD.exe для сборки файла .cs, а затем вы можете двигаться вперед с помощью XmlSerializer. Если вы продвигаетесь вперед с приведенным ниже кодом, я настоятельно рекомендую переместить ваш namespaceuri в некоторый мягкий файл настроек, чтобы вы могли легко изменить их в случае их изменения.
XmlDocument doc = new XmlDocument();
XmlElement root = doc.CreateElement("this", "declarationIdentifier", "demo.org.uk/demo/DeclarationGbIdentifier");
root.SetAttribute("xmlns:this", "demo.org.uk/demo/DeclarationGbIdentifier");
root.SetAttribute("xmlns:xsi", "http://www.w3.org/2001/XMLSchema-instance");
//Just setting an Attribute of xsi:schemaLocation it would always drop the xsi prefix in the xml so this is different to accomodate that
XmlAttribute schemaAtt = doc.CreateAttribute("xsi", "schemaLocation", "http://www.w3.org/2001/XMLSchema-instance");
schemaAtt.Value = "demo.org.uk/demo/DeclarationGbIdentifier DeclarationGbIdentifier.xsd";
root.Attributes.Append(schemaAtt);
root.SetAttribute("xmlns:nsIdentity", "demo.org.uk/demo/DeclarationGbIdentityType");
doc.AppendChild(root);
XmlElement declarationIdentity = doc.CreateElement("this", "declarationIdentity", "demo.org.uk/demo/DeclarationGbIdentifier");
XmlElement declarationUcr = doc.CreateElement("nsIdentity","declarationUcr","demo.org.uk/demo/DeclarationGbIdentityType");
declarationUcr.InnerText = "Hello World";
declarationIdentity.AppendChild(declarationUcr);
doc.DocumentElement.AppendChild(declarationIdentity);
Для вывода этого в виде строки или сбросить его в файл, вы можете использовать следующие операции, вывод I в файл, а также вывод на консоль в моем тестовом приложении.
using (var stringWriter = new StringWriter())
using (StreamWriter writer = new StreamWriter(@"C:\<Path to File>\testing.xml"))
using (var xmlTextWriter = XmlWriter.Create(stringWriter))
{
doc.WriteTo(xmlTextWriter);
xmlTextWriter.Flush();
writer.Write(stringWriter.GetStringBuilder().ToString());
Console.WriteLine(stringWriter.GetStringBuilder().ToString());
}
Что именно вы пробовали? Можете ли вы поделиться каким-то кодом своих усилий и указать, что именно идет не так? –