我正在使用xerces-c-3.1.1将xml文件读入C ++程序。
我找到了一个类型为
的节点aNodeDOMNode* aNode;
并且可以使用
获取节点名称name=aNode->getNodeName();
然而,当我尝试使用
时type=aNode->getNodeType();
获取类型,返回的类型是一个整数:ELEMENT_NODE。
如果有人能告诉我如何编写能让我判断一个节点名称是“nodeName”还是类型为“typeName”的代码,我将不胜感激。我知道如何使用
来完成前一部分if(wcscmp(name, L"nodeName")==0)
但不知道如何做后半部分。
答案 0 :(得分:0)
DOMNode::getNodeType
不是“获取名为type
的属性并将其作为字符串返回的简写。”它完全符合它的说法:检索DOM节点的DOM类型。 DOM节点是类型化对象:元素,文本,属性,处理指令,注释,CDATA等。
DOM节点的DOM类型 nothing 与恰好存储在元素节点的type
属性中的内容有关。这是为了您自己,使用常规属性访问语法。
答案 1 :(得分:0)
我想你想要XML实例的模式中的类型。使用Xerces获取解析文件的类型信息比在XML已经被解析并且可用作DOM树之后更容易。如果这是一个选项,请查看此处:get-schema-data-types-from-xerces该链接的答案描述了如何使用Xerces SAX解析器访问解析文件时的模式类型。
如果这不是您的选项,您需要保留用于加载XML的(DOM)解析器,并且还可以访问在验证文件时从架构生成的语法...最后更多的努力。
编辑:好的,看了问题的标题后,如果你只想获得type属性或模式类型,我会更加困惑......但是,如果你想获得属性的访问权限,请使用{ {3}}然后getAttributes获取您要查找的属性。
答案 2 :(得分:0)
您需要将名称从XMLStr转换为char *
char* temp2 = XMLString::transcode(aNode->getNodeName());
std::cout << "The current node name is " << temp2 << std::endl;