标签: xerces-c

使Xerces解析字符串而不是文件

我知道如何使用XercesDOMParser从xml文件创建一个完整的dom:

xercesc::XercesDOMParser parser = new xercesc::XercesDOMParser();
parser->parse(path_to_my_file);
parser->getDocument(); // From here on I can access all nodes and do whatever i want
Run Code Online (Sandbox Code Playgroud)

嗯,这有用......但是如果我想解析一个字符串怎么办?就像是

std::string myxml = "<root>...</root>";
xercesc::XercesDOMParser parser = new xercesc::XercesDOMParser();
parser->parse(myxml);
parser->getDocument(); // From here on I can access all nodes and do whatever i want
Run Code Online (Sandbox Code Playgroud)

我正在使用版本3.在里面AbstractDOMParser我看到了解析方法及其重载版本,只解析文件.

如何从字符串中解析?

c++ xml parsing xerces-c

16
推荐指数
2
解决办法
1万
查看次数

XMLString :: transcode的目的

我似乎不明白的目的XMLString::transcode(XMLCh*)XMLString::transcode(char*),因为很明显,我不明白之间的差别XMLCh*char*.有人可以让我更清楚吗?

c++ string char xerces-c xml-parsing

12
推荐指数
1
解决办法
2万
查看次数

在C++中读写XML文件

我研究了很多关于如何在C++中读写(更新)一个简单的.xml文件,但我无法为它开发代码.

我工作并安装了xerces-c库,我认为需要使用DOM或SAX2解析器来读取它.

请有人帮忙为它编写代码.

执行此操作的示例代码将非常有用.

谢谢和最诚挚的问候,Adarsh Sharma

c++ xml xerces-c

9
推荐指数
1
解决办法
6万
查看次数

Xerces-C中的XPath支持

我支持使用Xerces-C进行XML解析的遗留C++应用程序.我被.Net宠坏了,并习惯使用XPath从DOM树中选择节点.

有没有办法在Xerces-C中访问一些有限的XPath功能?我正在寻找像selectNodes("/ for/bar/baz")之类的东西.我可以手动执行此操作,但相比之下XPath非常好.

c++ xpath xerces xerces-c

8
推荐指数
2
解决办法
7310
查看次数

Xerces-C:从v2.x迁移到v3.x?

我想将一个项目(我不太熟悉的遗留代码)从Xerces-C v2.x迁移到v3.x.

事实证明,Xerces-C v3删除了DOMBuilder类.该迁移归档告诉我:

...许多DOM接口(DOMBuilder,DOMWriter,DOMInputSource等)被替换为最终DOM Level 3规范一致性工作的一部分.

真好.但有没有关于如何将依赖这些类的代码迁移到新API的指南?

c++ xml api upgrade xerces-c

8
推荐指数
1
解决办法
7056
查看次数

5
推荐指数
1
解决办法
2273
查看次数

验证 XML 时 xerces 崩溃

当我尝试使用 Xerces-c 验证 XML 时,我的应用程序有时会崩溃。

这是堆栈跟踪:

#0  0x000000000064ead0 in xercesc_3_2::XMLMutex::lock() ()
#1  0x000000000064eb32 in xercesc_3_2::XMLMutexLock::XMLMutexLock(xercesc_3_2::XMLMutex*) ()
#2  0x00000000005c8d5d in xercesc_3_2::XMLScanner::commonInit() ()
#3  0x00000000005c6ff7 in xercesc_3_2::XMLScanner::XMLScanner(xercesc_3_2::XMLValidator*, xercesc_3_2::GrammarResolver*, xercesc_3_2::MemoryManager*) ()
#4  0x00000000006caf59 in xercesc_3_2::IGXMLScanner::IGXMLScanner(xercesc_3_2::XMLValidator*, xercesc_3_2::GrammarResolver*, xercesc_3_2::MemoryManager*) ()
#5  0x00000000006858aa in xercesc_3_2::XMLScannerResolver::getDefaultScanner(xercesc_3_2::XMLValidator*, xercesc_3_2::GrammarResolver*, xercesc_3_2::MemoryManager*) ()
#6  0x00000000005da3f8 in xercesc_3_2::AbstractDOMParser::initialize() ()
#7  0x00000000005da163 in xercesc_3_2::AbstractDOMParser::AbstractDOMParser(xercesc_3_2::XMLValidator*, xercesc_3_2::MemoryManager*, xercesc_3_2::XMLGrammarPool*) ()
#8  0x00000000005e81bc in xercesc_3_2::XercesDOMParser::XercesDOMParser(xercesc_3_2::XMLValidator*, xercesc_3_2::MemoryManager*, xercesc_3_2::XMLGrammarPool*) ()
#9  0x00000000004f0323 in KEventUtils::validateXML(std::string) (this=0xdbb030, xmlFile="/mnt/lprsResults3//2017/09/18/C01/P00C013-2017091803862.xml.1.xml") at src/KEventUtils.cpp:315
#10 0x00000000004c3861 in ACSTrigger::transcodeVideo(int) (this=0xdbe170, id=0) at src/acsTrigger.cpp:1314
#11 0x00000000004cacaa in …
Run Code Online (Sandbox Code Playgroud)

c++ gdb xerces xerces-c

5
推荐指数
0
解决办法
660
查看次数

Xerces-C++内存

我无法理解Xerces-C++内存管理.

如果我有这个(示例)XML文件"config.xml":

<?xml version="1.0" encoding="UTF-8"?>
<settings>
    <port>
        <reference>Ref1</reference>
        <label>1PPS A</label>
        <enabled>true</enabled>
    </port>
</settings>
Run Code Online (Sandbox Code Playgroud)

而这段代码:

#include <xercesc/dom/DOM.hpp>

XERCES_CPP_NAMESPACE_USE

DOMElement *nextChildElement(const DOMElement *parent)
{
    DOMNode *node = (DOMNode *)parent->getFirstChild();
    while (node)
    {
        if (node->getNodeType() == DOMNode::ELEMENT_NODE)
            return (DOMElement *)node;
        node = node->getNextSibling();
    }
    return nullptr;
}

int main(int argc, char **argv)
{
    XMLPlatformUtils::Initialize();

    XMLCh tempStr[100];
    XMLString::transcode("LS", tempStr, 99);
    DOMImplementation *impl = DOMImplementationRegistry::getDOMImplementation(tempStr);
    DOMLSParser *parser = ((DOMImplementationLS*)impl)->createLSParser(DOMImplementationLS::MODE_SYNCHRONOUS, 0);
    DOMDocument *doc = impl->createDocument(0, 0, 0);

    doc = parser->parseURI("config.xml");

    DOMElement *el = doc->getDocumentElement(); …
Run Code Online (Sandbox Code Playgroud)

c++ xerces-c

5
推荐指数
1
解决办法
525
查看次数

为什么无法在 RHEL 8 / CentOS 8 上安装 PostGIS 3?

我尝试在 CentOS 8 上安装最新的 PostGIS 3.0.x,但没有成功。

我认为没有人在 RHEL 8 或 CentOS 8 上运行 PostGIS,我不明白为什么不这样做。貌似无法安装。

我已通过禁用 RHEL AppStream 成功安装了 Postgres 12.0

我在 CentOS 8 上安装 postgres 12 所采取的步骤:

1)

#dnf install https://download.postgresql.org/pub/repos/yum/reporpms/EL-8-x86_64/pgdg-redhat-repo-latest.noarch.rpm
Run Code Online (Sandbox Code Playgroud)

2)

#dnf --disablerepo AppStream install postgresql12
#dnf --disablerepo AppStream install postgresql12-server
Run Code Online (Sandbox Code Playgroud)

我现在正在尝试安装 PostGIS。

#dnf list --available | grep postgis30
Run Code Online (Sandbox Code Playgroud)

我看到 postgis30_96 是最新提供的(如下所列):

postgis30_96.x86_64                                  3.0.0alpha4-6.rhel8                                     pgdg96               
postgis30_96-client.x86_64                           3.0.0alpha4-6.rhel8                                     pgdg96               
postgis30_96-client-debuginfo.x86_64                 3.0.0alpha4-6.rhel8                                     pgdg96               
postgis30_96-debuginfo.x86_64                        3.0.0alpha4-6.rhel8                                     pgdg96               
postgis30_96-devel.x86_64                            3.0.0alpha4-6.rhel8                                     pgdg96               
postgis30_96-docs.x86_64                             3.0.0alpha4-6.rhel8                                     pgdg96               
postgis30_96-gui.x86_64                              3.0.0alpha4-6.rhel8                                     pgdg96               
postgis30_96-gui-debuginfo.x86_64                    3.0.0alpha4-6.rhel8                                     pgdg96               
postgis30_96-utils.x86_64                            3.0.0alpha4-6.rhel8                                     pgdg96 …
Run Code Online (Sandbox Code Playgroud)

postgresql hdf5 osgeo xerces-c postgis-installation

5
推荐指数
1
解决办法
1万
查看次数

Xerces-C问题; 对对象析构函数的调用时的段错误

我一直在玩Xerces-C XML库.

我有这个简单的例子,我正在玩.

我似乎无法在没有泄漏内存和没有segfaulting的情况下运行它.这是一个或另一个.

当我在"清理"下删除解析器对象时,总会发生段错误.

我尝试过同时使用2.8和2.7版本的库.

注意:我从代码中取出了所有异常检查,我得到了相同的结果,没有它.为了便于阅读和简化,我将其从下面的代码中删除.

任何精通Xerces的人都在乎提出一些建议吗?

我无法从后面的跟踪中得到很多信息,它只是跳进了超类析构函数并在那里进行了分类.

回溯:

(gdb) bt
#0  0x9618ae42 in __kill ()
#1  0x9618ae34 in kill$UNIX2003 ()
#2  0x961fd23a in raise ()
#3  0x96209679 in abort ()
#4  0x95c5c005 in __gnu_cxx::__verbose_terminate_handler ()
#5  0x95c5a10c in __gxx_personality_v0 ()
#6  0x95c5a14b in std::terminate ()
#7  0x95c5a6da in __cxa_pure_virtual ()
#8  0x003e923e in xercesc_2_8::AbstractDOMParser::cleanUp ()
#9  0x003ead2a in xercesc_2_8::AbstractDOMParser::~AbstractDOMParser ()
#10 0x0057022d in xercesc_2_8::XercesDOMParser::~XercesDOMParser ()
#11 0x000026c9 in main (argc=2, argv=0xbffff460) at test.C:77
Run Code Online (Sandbox Code Playgroud)

代码:

#include <string> …
Run Code Online (Sandbox Code Playgroud)

c++ xml segmentation-fault xerces-c

3
推荐指数
1
解决办法
3837
查看次数