【问题标题】:Read XMl File to String Array读取 XML 文件到字符串数组
【发布时间】:2009-02-13 14:45:10
【问题描述】:

我有一个 XML 文件,我想读取数据并将其分配给一个字符串数组,因此 Operative 将分配给 1 个数组,而 JobLocation 将分配给另一个

<Demo>
    <JOBOperatives>
    <Operative>
        <Clock>aaaa</Clock>
        <Name>aaaaa</Name>
        <MobileNumber>00000000010</MobileNumber>
        <OperativeTrade>3</OperativeTrade>
        <OperativeTicket>1</OperativeTicket>
    </Operative>
    </JOBOperatives>
    <JobLocation>
        <UPRN>aaa</UPRN>
        <Address1>aaaa</Address1>
        <Address2>aaaa</Address2>
        <Address3>aaaa</Address3>
        <Address4>aaa</Address4>
        <Address5>aa</Address5>
        <PostCode>JR4 4ED</PostCode>
    </JobLocation>

【问题讨论】:

  • 每行一个元素,例如 x[0] = "; x[1] = "";还是每行一个数组?

标签: c# .net xml


【解决方案1】:

我认为你的意思是 xml 中的每个属性是它自己在数组中的元素?

这似乎不是一个很好的数据结构,尤其是当 xml 模式定义允许项目以任何顺序到达时;您预期的索引可能会搞砸。强类型对象似乎更合适,并且在 .Net 中得到很好的支持。至少您应该使用字典,以便保留键。

在这种情况下,每棵树中的项目数量非常少,最终可能会得到很多,因此字典可能不是最佳选择。你可以做对象,但这将是很多额外的代码来设置它,我得到的印象是 xml 可能来自不同的来源,并且根据来源(或 something结构可以定期更改,因此最初希望使用松散类型的验证)。

最终你的目的地是一个数据库,所以我想在这种情况下,我将向你展示一个使用数据集的示例:

string xml = GetXmlString(); // <Demo><JobOperatives><Operative><Clock>aaaa</Clock>...
StringReader sr = new StringReader(xml);
DataSet ds = new DataSet();
ds.ReadXml(sr);

尝试一下:查看数据集的 .Tables 集合、每个表的 .TableName 属性、.Columns 集合和 .Rows 集合,以及每个列的 .ColumnName.DataType 属性。

【讨论】:

  • 我认为 OP 正在寻找两个数组。一种是每个元素都是一个 节点,另一种是每个元素都是一个 节点。
  • 没错,除非您知道更好的方法。我想读取数据验证它然后将数据写入 SQL 表。
  • 我知道,但即便如此,数组中的每个元素仍然是像 Address1 这样的字段,而不是适当的属性。对象或字典会是更好的结构。
  • 你能给我一些例子吗?
【解决方案2】:

XmlNode 类的OuterXml 属性可能对您有所帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-09-11
    • 1970-01-01
    • 2022-01-15
    • 1970-01-01
    • 1970-01-01
    • 2015-08-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多