如何反序列化这种类型的 xml 文件

本文关键字:xml 文件 类型 种类 反序列化 | 更新日期: 2023-09-27 18:21:39

<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文件中没有根元素,只有行元素开始和结束这个XML文件。如何反序列化这种类型的数据?在 C# 中

如何反序列化这种类型的 xml 文件

如果您

确定缺少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);

您也可以通过以下方式直接加载 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()
    }
}

您可以通过将reader.ReadSubTree()的结果传递给 XElement.Load(...) 来创建XElement s。

首先,它是一个XML文件 - 或者至少,它不代表XML文档。

一种选择是将文件复制到具有文档开始/结束标签的新文件中......然后,您可以将其作为普通文档加载。只需创建一个文件,编写文档开始标记,复制此文件的内容,然后编写文档结束标记,并关闭文件句柄。您甚至可以在内存中执行此操作。

或者,可以按原样阅读它,片段 - 可能通过 XmlReader .我不能说这是我做过的事情,我通常鼓励你创建一个完整的XML文件,因为那样你就会在更熟悉的领域。

如果没有根目录,它就不是XML文件。 如果您尝试解析解析它,解析器将抛出错误。 你可以这样做

<?xml version="1.0"?>
<Root>
--- add your file content here
</Root>  

然后将此文件路径提供给解析器。