【问题标题】:Reading a tag name from an IXMLDOMDocument2 object in Delphi从 Delphi 中的 IXMLDOMDocument2 对象中读取标签名称
【发布时间】:2010-06-19 12:34:27
【问题描述】:

我有这样的事情:

uses MSXML2_TLB;
type TDocumentType = (dtOrder, dtInvoice, dtStatus, dtError); // And a few more, actually
function DetermineDocumentType(doc: IXMLDOMDocument2): TDocumentType;
...

它必须做一些简单的事情:确定 doc 参数中包含哪种 XML。 XML 可能类似于:<Order>...</Order><Invoice>...</Invoice><Status>...</Status><Error>...</Error> 或其他内容。这些文件的内部结构非常相似,因此唯一可靠的方法是通过从 XML 中获取第一个标记名称来确定其类型。 Doc.nodeName 和 Doc.baseName 不起作用。我可以将 XML 读取为文本,通过代码对其进行解析以确定标记名,但这是我拒绝使用的肮脏技巧。所以我需要一个方法,它会通过 IXMLDOMDocument2 接口的正确方法返回标签名称。 更糟糕的是,我无法控制此函数之外的代码,并且作为第二个限制,此根标记碰巧不区分大小写,使得使用 selectNode() 之类的技巧无法使用。由于遗留代码和以前的开发人员过去做出的错误决定,这恰好是一个问题。 (幸运的是,在这个项目中,只有根标签似乎很奇怪。) 顺便说一句,这个功能是为了替换在 TheDailyWTF 网站上会很好的类似功能。它以前会从接口读取 XML,将其完全转换为大写,最后执行大量 pos() 函数调用以检查任何可能的标记。效率不是很高,尤其是因为这段代码必须处理数千个 XML 文件...

那么,如何获取IXMLDOMDocument2类型的对象中根元素的标签名呢?

【问题讨论】:

    标签: xml delphi delphi-2007 tagname


    【解决方案1】:

    我认为你正在寻找的是

    doc.documentElement.nodeName
    

    【讨论】:

      猜你喜欢
      • 2022-12-07
      • 2020-10-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-21
      • 1970-01-01
      相关资源
      最近更新 更多