C# 如何在没有xmlns的情况下将文档序列化为XML

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

我正在尝试将对象序列化为XML。我遇到一个问题,xsi和xsd是默认添加的。我添加了以下代码以删除名称空间:

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;