gpt4 book ai didi

c# - 删除 xml :space ="preserve" of XML file using C#

转载 作者:太空宇宙 更新时间:2023-11-03 21:04:06 25 4
gpt4 key购买 nike

我使用此代码从 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>

KP_No 标签为空值。我想删除 XML 导出文件的 xml:space="preserve"。如何做到这一点?

最佳答案

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

请参阅下面的示例,从 XML 文件的 KP_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) ...

请注意您的 XML 没有根元素。用 XML 定义一个是一种很好的做法。

上面代码片段后的结果:

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

关于c# - 删除 xml :space ="preserve" of XML file using C#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42411849/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com