这是第一次使用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>
答案 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"))
{
}
}
}