C# 如何在没有xmlns的情况下将文档序列化为XML
我正在尝试将对象序列化为XML。我遇到一个问题,xsi和xsd是默认添加的。我添加了以下代码以删除名称空间:C# 如何在没有xmlns的情况下将文档序列化为XML,c#,.net,xml,xsd,xml-namespaces,C#,.net,Xml,Xsd,Xml Namespaces,我正在尝试将对象序列化为XML。我遇到一个问题,xsi和xsd是默认添加的。我添加了以下代码以删除名称空间: public string CommitDocumentToRepository(string extension, byte[] fileBytes) { //Convert to PDF byte[] loPDFFileBytes; ConversionService.ContentResponse loResponse = new DocumentAdap
public string CommitDocumentToRepository(string extension, byte[] fileBytes)
{
//Convert to PDF
byte[] loPDFFileBytes;
ConversionService.ContentResponse loResponse = new DocumentAdapter.ConversionService.ContentResponse();
using (ConversionService.CustomPDFSoapClient loConversionServiceClient = new DocumentAdapter.ConversionService.CustomPDFSoapClient())
{
loResponse = loConversionServiceClient.OfficeToPDFContent(fileBytes, extension);
loPDFFileBytes = loResponse.ContentPDF;
}
if (loPDFFileBytes != null)
{
xform loDocContainer = new xform();
xformInstance loDocProperties = new xformInstance();
loDocProperties.FIRST_NAME= this.FirstName;
loDocProperties.LAST_NAME= this.LastName;
loDocProperties.MID_NAME = this.MidName;
loDocContainer.instance = loDocProperties;
string lsTempFile = System.IO.Path.GetTempFileName();
string lsXMLofProperties = loDocContainer.Serialize();
XmlDocument loDoc = new XmlDocument();
loDoc.LoadXml(lsXMLofProperties);
loDoc.Save(lsTempFile);
byte[] loFilePropertiesXML = Common.StreamFile(lsTempFile);
string lsReturnValue = string.Empty;
try
{
using (ISCommittalService.CommittalSoapClient loCommittalServiceClient = new DocumentAdapter.ISCommittalService.CommittalSoapClient())
{
lsReturnValue = loCommittalServiceClient.CommitDocumentByte(loPDFFileBytes, ".PDF", loFilePropertiesXML);
}
}
catch (Exception loException)
{
ADConnectionException loConnectionException = new ADConnectionException(loException);
throw loException;
}
return lsReturnValue;
}
else
return string.Empty;
}
public string Serialize()
{
XmlSerializerNamespaces ns = new XmlSerializerNamespaces();
ns.Add("", "");
XmlWriterSettings xws = new XmlWriterSettings();
xws.OmitXmlDeclaration = true;
xws.Encoding = Encoding.UTF8;
StringBuilder loBuilder = new StringBuilder();
XmlSerializer formatter = new XmlSerializer(this.GetType());
using (StringWriter loWriter = new StringWriter(loBuilder))
{
formatter.Serialize(loWriter, this,ns);
}
return loBuilder.ToString();
}
这是输出:
<?xml version="1.0" encoding="UTF-16"?>
<xform>
<instance>
<FIRST_NAME xmlns:d3p1="http://www.w3.org/2001/XMLSchema-instance"
d3p1:type="q4:string"
xmlns:q4="http://www.w3.org/2001/XMLSchema">John</FIRST_NAME>
<MID_NAME xmlns:d3p1="http://www.w3.org/2001/XMLSchema-instance"
d3p1:type="q3:string" xmlns:q3="http://www.w3.org/2001/XMLSchema"/>
<LAST_NAME xmlns:d3p1="http://www.w3.org/2001/XMLSchema-instance"
d3p1:type="q5:string"
xmlns:q5="http://www.w3.org/2001/XMLSchema">Doe</LAST_NAME>
</instance>
</xform>
约翰
雌鹿
如何删除添加的xmlns(xmlns:d3p1=)http://www.w3.org/2001/XMLSchema-instance"
d3p1:type=“q4:字符串”
xmlns:q4=”http://www.w3.org/2001/XMLSchema“
)从每个对象?
因为
xws.Encoding=Encoding.UTF8代码>这是我的代码,似乎没有任何影响。向我们展示您的c#类..NET字符串具有Unicode编码(UTF-16)。用正确的编码将xml直接序列化(保存)到文件中。@AlexanderPetrov我用c#类更新了文章。如何使用utf-8将xml直接保存到文件中?您还没有添加类。我猜您的所有属性(例如,名字
)的类型都是对象
。将这些更改为string
将删除类型属性。@charleMager工作正常。非常感谢。我怎样才能把utf-16换成utf-8呢?我使用了这段代码,但没有更改编码:XmlWriterSettings xws=newxmlwritersettings();xws.OmitXmlDeclaration=true;xws.Encoding=Encoding.UTF8;