2010-06-19 171 views
0

读取标签的名字我有这样的事情:从IXMLDOMDocument2对象在德尔福

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

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

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

回答

2

我知道你在寻找的只是

doc.documentElement.nodeName 
+0

权当场!谢谢。 – 2010-06-19 23:30:17