如何在xml for XmlReader中为跳过的元素添加空格?

时间:2011-06-30 12:38:56

标签: c# xml xmlreader

我正在使用XmlReader来读取xml文件。我无法控制xml文件,有时xml文件会跳过如下所示的元素。

<Part xsi:type="Part1">
  <Quantity>1</Quantity>
  <Drawing>10</Drawing>
</Part>
<Part xsi:type="Part2">
  <Quantity>1</Quantity>
</Part>

图纸和重量位于第一个条目(第1部分),但不在第二个条目(第2部分)中。 这个xml有1300个条目(Part's),并非所有条目(Part)都具有上述所有元素。

我的XmlReader代码如下。

private void Select(string elem, ArrayList al)
{
 using (XmlReader reader = new XmlTextReader(xml))
 {
  while (reader.Read())
  {
    if (reader.NodeType == XmlNodeType.Element)
    {
        if (reader.Name == elem && reader.IsStartElement())
        {
            string output = reader.ReadString();

            Console.WriteLine(output);
        }}}}}

当元素不在xml的条目(Part)中时,我如何处理向Arraylist添加元素?

更新: 我修改了代码只是一个输出,这是预期的输出:
1
10个
1
“”

我希望第2部分的输出显示带有空格" "的字符串,用于缺少像Drawing这样的元素。

1 个答案:

答案 0 :(得分:2)

我认为您可以尝试接近此示例的语法vwery:

Reading XML through LINQ

您可以使用以下内容测试节点的存在:

XDocument document = XDocument.Load("file.xml");

foreach (XElement item in document.Descendants("Part"))
{
    if (item.Element("Quantity") == null)
         al.add(string.Empty);
    else
         al.add(item.Element("Quantity").value);


}