使用C#中的标签属性按标签拆分xml

阿杰

我想通过具有属性的标签将xml文件拆分为多个文件。

这是我的xml

源XML文档

<BATCH ID="131070" Date_Submitted="12/1/2014 7:36:06 AM" Date_Received="12/1/2014 7:36:06 AM" Date_Processed="12/1/2014 7:40:00 AM" UserID="PAYPINST" Error_Count="1">
  <CLAIMS Submitter="541884924" Submitter_Num="" Version="005010X223A2">
   <CLAIM Rec_ID="1" Claim_Type="Institutional" Submitter="541884924">

   </CLAIM>
   <CLAIM Rec_ID="2" Claim_Type="Institutional" Submitter="541884924">

   </CLAIM>
 </CLAIMS>
</BATCH>

在这里,我想用分割文件CLAIM我使用了以下代码。

            XDocument doc = XDocument.Load(xmlFilePath);
            var newDocs = doc.Descendants("CLAIM")
                             .Select(d => new XDocument(new XElement("BATCH", new XElement("CLAIMS", d))));

            foreach (var newDoc in newDocs)
            {
                newDoc.Save(SplitedxmlFileName);
            }

当我运行代码时,它给了我分割的文件。但这并没有给我标签属性

我引用此链接:如何将一个XML文件拆分为多个XML文件

我想输出这样的东西:

应该拆分为两个xml文档,如下所示

1)

<BATCH ID="131070" Date_Submitted="12/1/2014 7:36:06 AM" Date_Received="12/1/2014 7:36:06 AM" Date_Processed="12/1/2014 7:40:00 AM" UserID="PAYPINST" Error_Count="1">
  <CLAIMS Submitter="541884924" Submitter_Num="" Version="005010X223A2">
    <CLAIM Rec_ID="1" Claim_Type="Institutional" Submitter="54188424">

    </CLAIM>
  </CLAIMS>
</BATCH>

2)

<BATCH ID="131070" Date_Submitted="12/1/2014 7:36:06 AM" Date_Received="12/1/2014 7:36:06 AM" Date_Processed="12/1/2014 7:40:00 AM" UserID="PAYPINST" Error_Count="1">
  <CLAIMS Submitter="541884924" Submitter_Num="" Version="005010X223A2">
    <CLAIM Rec_ID="2" Claim_Type="Institutional" Submitter="51884924">

    </CLAIM>
  </CLAIMS>
</BATCH>

如何通过带有属性标签拆分xml文件

皮尤什

我试图隔离步骤。您能够区分不同的节点。因此,您只需要父节点属性。假设BATCHCLAIMS的属性值对于每个xml文件始终是相同的。您可以尝试对代码进行以下修改。

XDocument doc = XDocument.Load("XMLFile1.xml");
var newDocs = doc.Descendants("CLAIM")
                         .Select(d => new XDocument(new XElement("BATCH", new XElement("CLAIMS", d))));

var batch = doc.Element("BATCH");
var claims = doc.Descendants("CLAIMS");

int i = 0;
foreach (var newDoc in newDocs)
{
    foreach (XAttribute xat in batch.Attributes())
    {
        newDoc.Element("BATCH").SetAttributeValue(xat.Name, xat.Value);
    }
    foreach (XElement claim in claims)
    {
        foreach (XAttribute xat in claim.Attributes())
        {
            newDoc.Descendants("CLAIMS").ElementAt(0).SetAttributeValue(xat.Name, xat.Value);
        }
    }

    newDoc.Save(i.ToString());
    ++i;
}

让我知道是否有帮助。

编辑

XDocument doc = XDocument.Load("XMLFile1.xml");
var newDocs = doc.Descendants("CLAIM")
                         .Select(d => new XDocument(new XElement("BATCH", new XElement("CLAIMS", d))));

var batch = doc.Element("BATCH");
var claims = doc.Descendants("CLAIMS");

int i = 0;
foreach (var newDoc in newDocs)
{
    batch.Attributes().All(p => { newDoc.Element("BATCH").SetAttributeValue(p.Name, p.Value); return true; });

    claims.All(p => p.Attributes().All(k => { newDoc.Descendants("CLAIMS").ElementAt(0).SetAttributeValue(k.Name, k.Value); return true; }));

    newDoc.Save(i.ToString());
    ++i;
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用C#中的标签属性按标签拆分xml

来自分类Dev

如何使用C#解析XML链接标签href属性

来自分类Dev

如何使用C#从xml文件中删除空标签

来自分类Dev

在C#中从xml读取封闭的标签

来自分类Dev

c#从XML标签中删除(空)

来自分类Dev

无论使用C#在XML文件中的级别如何,都获取具有相同标签名称的所有标签

来自分类Dev

使用 BeautifulSoup4 提取 XML 标签中的属性

来自分类Dev

使用python 3在xml中的子标签开头添加属性

来自分类Dev

在C#中从XML删除diffgram和NewDataSet标签

来自分类Dev

c#删除文本框中的XML标签

来自分类Dev

C#使用重复标签反序列化XML

来自分类Dev

按组中的标签标签

来自分类Dev

按R中字母/字符数拆分列标签

来自分类Dev

C#中的滚动标签

来自分类Dev

按钮中的 C# 标签

来自分类Dev

如何使用标签C#

来自分类Dev

考虑在XML中具有属性的标签

来自分类Dev

使用标签属性对XML进行SQL查询

来自分类Dev

使用Python从XML标签获取属性

来自分类Dev

使用 Bash 从 XML 属性获取注释标签

来自分类Dev

<c:if> 标签中 var 和 scope 属性的使用

来自分类Dev

如何使用另一个XML标签的属性值中的引用查找XML标签并显示它?

来自分类Dev

在SQL Server中读取和拆分XML重复标签

来自分类Dev

如何使用C#从HTML页面中删除<script>标签?

来自分类Dev

使用Regex C#从HTML标签中删除样式

来自分类Dev

使用C#删除VCF文件中的特定标签

来自分类Dev

如何拆分xml标签变量并使用php显示

来自分类Dev

使用 XSLT 从 XML 中删除 <TABLE> 标签中的多余标签

来自分类Dev

使用标签属性过滤简单框架中的标签