代码之家  ›  专栏  ›  技术社区  ›  kevindaub

如何处理XML节点名称(硬编码值)?

  •  0
  • kevindaub  · 技术社区  · 16 年前

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

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

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

    2 回复  |  直到 16 年前
        1
  •  2
  •   casperOne    16 年前

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

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

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

    您想使用XSD。EXE工具用于此。

        2
  •  2
  •   Mike Powell    16 年前

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

    推荐文章