Linq XML动态构建

时间:2009-10-19 16:27:41

标签: c# xml linq linq-to-xml

我正在构建一个xml文件。该文件的一部分是静态的。一些文件是动态的。我的代码有一个“空对象引用”错误。

任何提示都会很棒。

private XElement BuildDataElement()
{
    // this is going to be more complicated
    return new XElement("data");
}

public void TestXML(string fname)
{
    // build the data element
    XElement allData = BuildDataElement();

    // Build the header
    XDocument doc = new XDocument(
        new XElement("map",
            new XAttribute("showLabels", "1"),
            new XAttribute("includeNameInLabels", "1"),
            new XElement("colorRange",
                new XElement("color",
                new XAttribute("minValue", "1")
                )
            ),
            allData,
            new XElement("application",
                new XElement("apply",
                    new XAttribute("toObject", "TOOLTIP"),
                    new XAttribute("styles", "TTipFont,MyDataPlotStyle")
                )
            )
         )
     );

    if (File.Exists(fname))
        File.Delete(fname);
    doc.Save(fname);
         }

2 个答案:

答案 0 :(得分:7)

  

任何提示都会很棒。

你明白了。以下是我的提示:

  • 获取调试器。
  • 将调试器设置为在所有异常处断开。
  • 在调试器中运行代码,直到发生null引用异常。
  • 找出哪些值为null,您不希望为null。
  • 插入一个null的检查,用于处理正确值为null的情况,或者更改逻辑,使该值无法为null。
  • 彻底的代码审查和测试修复。
  • 为您的测试套件编写回归测试,以验证此错误是否会再次出现。

答案 1 :(得分:0)

在提供的代码段中,唯一可以看到错误的方法是两个地方。

BuildDataElement();

可能是生成错误,而不是Xml文档。

接下来,如果BuildDataElement();返回可能是问题的话,因为我猜测XDocument正在对.ToString()进行allData或某些操作