C# 删除xml:space=";保留;用C语言编写XML文件#
我使用以下代码从DataTable导出到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
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)
天达苏州