C#2根元素将ADO XML字符串拆分为2个文件

时间:2017-07-27 02:52:37

标签: c# xml xml-parsing

这是第一次使用C#。由于ADO xml格式使用它,我已经制作了一个程序,每10分钟从串行COM端口接收XML数据。

我收到数据的问题我从2个XML文件的COM端口获取一个字符串我在下面举了一个例子,当我尝试读取这个文件时,我得到一个关于多个根元素的错误

sBuffer拥有所有XML数据,并且当前将其写入data.xml 我想帮助将sBuffer字符串分成2个部分,每个xml保存为

C:\数据\ data1.xml作为

C:\数据\ data2.xml

C#

 private Task processData(string sBuffer)
    {
        Console.WriteLine("NEW DATA");           

        string filePath = @"C:\Data\data.xml";
        string text = sBuffer;

        return WriteTextAsync(filePath, text);
    }

XML

<xml xmlns:s="uuid:BDC6E3F0-6DA3-11d1-A2A3-00AA00C14882"  
  xmlns:rs="urn:schemas-microsoft-com:rowset"  
  xmlns:z="#RowsetSchema">  
  <s:Schema id="RowsetSchema">  
  <s:ElementType name="row" content="eltOnly">  
  <s:AttributeType name="ShipperID"/>  
  <s:AttributeType name="CompanyName"/>  
  <s:AttributeType name="Phone"/>  
  <s:Extends type="rs:rowbase"/>  
  </s:ElementType>  
  </s:Schema>  
   <rs:data>  
     ...  
  </rs:data>  
</xml> 
<xml xmlns:s="uuid:BDC6E3F0-6DA3-11d1-A2A3-00AA00C14882"  
  xmlns:rs="urn:schemas-microsoft-com:rowset"  
  xmlns:z="#RowsetSchema">  
  <s:Schema id="RowsetSchema">  
  <s:ElementType name="row" content="eltOnly">  
  <s:AttributeType name="ShipperID"/>  
  <s:AttributeType name="CompanyName"/>  
  <s:AttributeType name="Phone"/>  
  <s:Extends type="rs:rowbase"/>  
  </s:ElementType>  
  </s:Schema>  
   <rs:data>  
     ...  
  </rs:data>  
</xml> 

1 个答案:

答案 0 :(得分:0)

您可以按<wrapper>标记包装数据或使用XML阅读器配置:

        var settings = new XmlReaderSettings();
        settings.ConformanceLevel = ConformanceLevel.Fragment;
        using (XmlReader reader = XmlReader.Create(filePath, settings))
        {
            while (reader.Read())
            {
                if (reader.Name.Equals("xml"))
                {

                }
            }
        }