0

我正在使用 xerces-c-3.1.1 将 xml 文件读入 C++ 程序。

我找到了一个类型为 aNode 的节点

DOMNode*       aNode;

并且可以使用获取节点名称

name=aNode->getNodeName();

但是,当我尝试使用

type=aNode->getNodeType();

要获取类型,返回的类型是一个整数:ELEMENT_NODE。

如果有人能告诉我如何编写代码,让我能够判断一个节点的名称是否为“nodeName”和类型是否为“typeName”,我将不胜感激。我知道如何使用

if(wcscmp(name, L"nodeName")==0)

但不知道后半部分怎么做。

4

3 回答 3

0

您需要将名称从 XMLStr 转换为 char*

char* temp2 = XMLString::transcode(aNode->getNodeName());
std::cout << "The current node name is " << temp2 << std::endl;
于 2014-10-07T13:21:01.363 回答
0

DOMNode::getNodeType不是“获取命名属性type并将其作为字符串返回”的简写。它正如它所说的那样:检索 DOM 节点的 DOM 类型。DOM 节点是类型化的对象:元素、文本、属性、处理指令、注释、CDATA 等。

DOM 节点的 DOM 类型与恰好存储在元素节点的属性中的内容无关。type这是您自己使用的常规属性访问语法。

于 2012-03-12T22:52:03.933 回答
0

我猜你想要 XML 实例模式中的类型。在使用 Xerces 解析文件时获取类型信息比在 XML 已经被解析并作为 DOM 树可用之后更容易。如果这是您的一个选项,请在此处查看:get-schema-data-types-from-xerces链接中的答案描述了如何在使用 Xerces SAX 解析器解析文件时访问模式类型。

如果这不是您的选择,您需要保留用于加载 XML 的 (DOM) 解析器,并且还需要访问在验证文件时从模式生成的语法......最后付出更多的努力.

编辑:好的,在查看问题的标题后,如果您只想获取类型属性或架构类型,我会更加困惑......但是,如果您想访问属性,只需使用getAttributes然后getNamedItem获取您正在寻找的属性。

于 2012-03-13T11:42:16.410 回答