xerces-处理标记名称中的名称空间

xerces - Dealing with namespaces in the tag name

本文关键字:空间 处理 xerces-      更新时间:2023-10-16

我有一个基于XSD的XML,看起来像:

<ns1:root xmlns:ns1="ROOT_NAMESPACE">
    <ns1:thing1>abc</ns1:thing>
    <ns1:thing2>def</ns1:thing>
</ns1:root>

我在C++中,我可以成功地读取XML并解析它。但我想使用不带命名空间的标记名来获取元素,比如thing1thing2,但目前看来我需要它,比如ns1:thing1。(我正在尝试使用getElementsByTagName方法。)如何让解析器忽略名称空间?

我的解析器设置是:

myParser.setValidationScheme(XercesDOMParser::Val_Always);
myParser.setExternalSchemaLocation(xsdLocation);
myParser.setDoNamespace(true);
myParser.setDoSchema(true);
myParser.setValidationSchemaFullChecking(true);

您必须创建一个新文档并在没有命名空间的情况下重建整个xml树!递归遍历树并只使用忽略前缀的getLocalName()方法构建新元素应该很容易。