<row>
<id>1</id>
<code></code>
<name></name>
<address></address>
<state></state>
<zone>?</zone>
</row>
<row>
<id>2</id>
<code>AA</code>
<name>Ataria</name>
<address>Sitapur National Highway 24, Uttar Pradesh</address>
<state>Uttar Pradesh</state>
<zone>NER</zone>
</row>
我在这个xml文件中没有root元素只有row元素开始和结束这个xml文件。 如何反序列化这类数据?在c#
答案 0 :(得分:4)
如果您确定缺少root只是XML的一个问题 - 只需手动添加:
string fileContent = File.ReadAllText(path);
string rawXml = "<root>" + fileContent + "</root>";
// now you can use LINQ-to-XML or whatever
XDocument xdoc = XDocument.Load(rawXml);
答案 1 :(得分:1)
您还可以通过
直接加载XML片段XmlReaderSettings settings = new XmlReaderSettings();
settings.ConformanceLevel = ConformanceLevel.Fragment;
using (XmlReader reader = XmlReader.Create("tracelog.xml", settings))
{
while (reader.Read())
{
// Process each node of the fragment,
// possibly using reader.ReadSubtree()
}
}
您可以通过将XElement
的结果传递给reader.ReadSubTree()
来创建XElement.Load(...)
。
答案 2 :(得分:0)
首先,它是不是 XML文件 - 或者至少,它不代表XML文档。
一种选择是将文件复制到新文件中, 具有文档开始/结束标记...然后您可以将其作为普通文档加载。只需创建一个文件,编写一个文档开始标记,复制该文件的内容,然后编写一个文档结束标记,并关闭文件句柄。你甚至可以在记忆中这样做。
或者,它可以 以片段形式 - 可能通过XmlReader
读取它。我不能说这是我已经完成的事情,我通常会鼓励你创建一个完整的XML文件,因为那时你将会更熟悉。
答案 3 :(得分:0)
如果它没有root,则不是XML文件。如果您尝试解析它,解析器将抛出错误。你可以这样做
<?xml version="1.0"?>
<Root>
--- add your file content here
</Root>
然后将此文件路径提供给解析器。