C# 删除xml:space=";保留;用C语言编写XML文件#

C# 删除xml:space=";保留;用C语言编写XML文件#,c#,xml,C#,Xml,我使用以下代码从DataTable导出到XML文件: dt1 = TNET2_POHeadService.TNET2_POHead_GetByPO_NoRaw(PO_No); dt2 = TNET2_PODetailsService.TNET2_PODetails_GetByPO_NoRaw(PO_No); ds.Tables.Add(dt1); ds.Tables[0].TableName = "T

我使用以下代码从DataTable导出到XML文件:

dt1 = TNET2_POHeadService.TNET2_POHead_GetByPO_NoRaw(PO_No);
                dt2 = TNET2_PODetailsService.TNET2_PODetails_GetByPO_NoRaw(PO_No);
                ds.Tables.Add(dt1);
                ds.Tables[0].TableName = "TNET2_POHead";
                ds.Tables.Add(dt2);
                ds.Tables[1].TableName = "TNET2_PODetails";
                saveFileDialog1.ShowDialog();

                ds.WriteXml(saveFileDialog1.FileName);
一切正常,但:

<ContractNo>P1717-198905-003(01)</ContractNo>
<KP_No xml:space="preserve">             </KP_No>
<SettlementRoute1>TENTAC SUZHOU</SettlementRoute1>
P1717-198905-003(01)
天达苏州

KP_无标记为空值。我想删除xml导出文件的xml:space=“preserve”。如何做到这一点?
System.Xml.Linq
命名空间中的XDocument类允许使用Linq轻松管理和操作Xml

请参见下面的示例,从xml文件的KP\u No元素中删除
xml:space=“preserve”
属性:

XDocument doc = XDocument.Load("XMLFile1.xml"); // or XDocument.Load(myStream) ...

Func<XAttribute, bool> preserveAttrFunc = atr => atr.Name.LocalName == "space" && atr.Value == "preserve";
XElement kp_no = doc.Descendants("KP_No").FirstOrDefault(kp => kp.HasAttributes && kp.Attributes().Any(preserveAttrFunc));

if(kp_no != null)
    kp_no.Attributes().FirstOrDefault(preserveAttrFunc).Remove();

// doc.Save(filename) ...
XDocument doc=XDocument.Load(“XMLFile1.xml”);//或XDocument.Load(myStream)。。。
Func preserveAttrFunc=atr=>atr.Name.LocalName==“space”&&atr.Value==“preserve”;
XElement kp_no=doc.substands(“kp_no”).FirstOrDefault(kp=>kp.HasAttributes&&kp.Attributes().Any(preserveAttrFunc));
如果(kp_no!=null)
kp_no.Attributes().FirstOrDefault(preserveAttrFunc.Remove();
//doc.Save(文件名)。。。
注意,您的XML没有根元素。最好用XML定义一个

以上代码段后的结果:

<root>
  <ContractNo>P1717-198905-003(01)</ContractNo>
  <KP_No></KP_No>
  <SettlementRoute1>TENTAC SUZHOU</SettlementRoute1>
</root>

P1717-198905-003(01)
天达苏州

System.Xml.Linq
命名空间中的XDocument类允许使用Linq轻松管理和操作Xml

请参见下面的示例,从xml文件的KP\u No元素中删除
xml:space=“preserve”
属性:

XDocument doc = XDocument.Load("XMLFile1.xml"); // or XDocument.Load(myStream) ...

Func<XAttribute, bool> preserveAttrFunc = atr => atr.Name.LocalName == "space" && atr.Value == "preserve";
XElement kp_no = doc.Descendants("KP_No").FirstOrDefault(kp => kp.HasAttributes && kp.Attributes().Any(preserveAttrFunc));

if(kp_no != null)
    kp_no.Attributes().FirstOrDefault(preserveAttrFunc).Remove();

// doc.Save(filename) ...
XDocument doc=XDocument.Load(“XMLFile1.xml”);//或XDocument.Load(myStream)。。。
Func preserveAttrFunc=atr=>atr.Name.LocalName==“space”&&atr.Value==“preserve”;
XElement kp_no=doc.substands(“kp_no”).FirstOrDefault(kp=>kp.HasAttributes&&kp.Attributes().Any(preserveAttrFunc));
如果(kp_no!=null)
kp_no.Attributes().FirstOrDefault(preserveAttrFunc.Remove();
//doc.Save(文件名)。。。
注意,您的XML没有根元素。最好用XML定义一个

以上代码段后的结果:

<root>
  <ContractNo>P1717-198905-003(01)</ContractNo>
  <KP_No></KP_No>
  <SettlementRoute1>TENTAC SUZHOU</SettlementRoute1>
</root>

P1717-198905-003(01)
天达苏州