【问题标题】:What to do with XML node names (hard coded values)?如何处理 XML 节点名称(硬编码值)?
【发布时间】:2009-02-19 03:53:25
【问题描述】:

我最近一直在使用 xml。并且注意到了一些现象(也许对世界其他地方来说没什么大不了的,但对我来说确实如此)。也许,我是个新手。但是不应该将大多数硬编码或幻数分解为配置文件吗?例如,

    string url = "http://www.domain.com/aDocument.xml";        
    XmlDocument feed = new XmlDocument();
    feed.Load(url);

    XmlNode errorsNode = feed.SelectSingleNode("Errors");

    if (errorsNode != null)
    {
        XmlNode error = errorsNode.FirstChild;
        lblError.Text = "Error: " + error.SelectSingleNode("Code").InnerText;
    }

这里是xml文档:

  <Errors>
    <Error>
        <Code>AWS.MissingParameters</Code>
        <Message>You are missing an parameter</Message>
    </Error>
 </Errors>

如果不对“代码”或“消息”进行硬编码,您将如何解析它?

【问题讨论】:

    标签: xml language-agnostic configuration magic-numbers


    【解决方案1】:

    就像我对数字一样。我将声明具有要获取的元素名称的字符串类型的常量,然后将其传递给我的 XML 工具上的方法。

    但是,您可能需要考虑从 XML 文档(或架构,如果有的话)创建一个对象表示,它会为您处理所有这些。这样,您只需将 XML 文档加载到代码中,它就会为您解析为对象表示。

    然后,如果 XML 发生变化,您将修改生成的代码以使用您的新元素名称。

    您想为此使用 XSD.EXE 工具。

    【讨论】:

      【解决方案2】:

      我不知道这是否是 最好的 选项,但我通常看到这种事情是通过使用一组字符串常量来处理的。至少,如果您在多个地方处理相同的 XML 模式,那么您的魔术字符串都定义在一个地方。除非架构经常更改,否则我认为将其归类为配置文件将是矫枉过正。

      【讨论】:

        猜你喜欢
        • 2010-09-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-12-12
        • 2014-12-22
        • 1970-01-01
        • 1970-01-01
        • 2023-04-04
        相关资源
        最近更新 更多