Linq XML 动态构建

发布于 2024-08-08 10:23:08 字数 1049 浏览 6 评论 0原文

我正在构建一个 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);
         }

I am building an xml file. Parts of the file are static. Some of the file is dynamic. My code has an error of “Null object reference”.

Any tips would be awesome.

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);
         }

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

苹果你个爱泡泡 2024-08-15 10:23:08

任何提示都会很棒。

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

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

Any tips would be awesome.

You got it. Here are my tips:

  • Obtain a debugger.
  • Set the debugger to break at all exceptions.
  • Run your code in the debugger until the null reference exception happens.
  • Figure out which value was null that you did not expect to be null.
  • Either insert a check for null that handles the situation where the value is null correctly, or change the logic so that it becomes impossible for that value to be null.
  • Thoroughly code-review and test the fix.
  • Write a regression test for your test suites that verifies that this bug doesn't come back.
内心旳酸楚 2024-08-15 10:23:08

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

BuildDataElement();

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

接下来,如果 BuildDataElement(); 返回,这可能是问题所在,因为我猜测 XDocument 正在对 allData 执行 .ToString() 或某些操作代码>

The only way in the snippet provided I can see getting an error would be 2 two places.

BuildDataElement();

Could be generating the error, rather than the Xml document.

Next if BuildDataElement(); returns that might be the problem, since I am guessing the XDocument is doing a .ToString() or some action on allData

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文