【问题标题】:Remove xml:space="preserve" of XML file using C#使用 C# 删除 XML 文件的 xml:space="preserve"
【发布时间】:2017-02-23 18:22:19
【问题描述】:

我使用此代码从 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"。该怎么做?

【问题讨论】:

    标签: c# xml


    【解决方案1】:

    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 中定义一个是一种很好的做法。

    上面代码sn-p之后的结果:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-25
      • 2013-09-08
      • 1970-01-01
      • 1970-01-01
      • 2013-04-15
      • 1970-01-01
      相关资源
      最近更新 更多