- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我在xml解析问题上纠结了两天,到现在还没完:)
好吧,经过多次尝试,我最终决定在我的 C++ 应用程序中使用 Xerces-C 来解析 xml。
好吧...我尝试了 TinyXml、RapidXml 和其他...从内存分配的角度管理节点时,Xerces 的行为也相同。
好吧,DOMElement、DOMDocument、DOMNode 它们都是私有(private)构造类...我知道这是为了在解析时确保最佳性能,但在尝试管理类之间的节点时它确实是一件坏事。
我有这个问题。我想创建一个存储 xml 文档的类(一个包含我想要的所有节点并且我可以自由导航的 DOM 对象,所以它不是字符串 var,而是 DOM obj,我想 DOMElement/DOMDocument 是好的).好吧,这个对象是我类(class)的成员。在我的类中使用函数我想让这个 DOM 树及时增长......在内部我保留树并且当我想要时我将它打印到一个文件。这就是我想要做的。我知道这看起来很奇怪,但这是我的要求。我必须这样做,不考虑所有其他解决方案......抱歉。 (我应该告诉你为什么要这样实现,但是会花很多时间)。
在代码中表达这一点,以下几行是我想要实现的目标的表示:
class MyTree {
public:
MyTree();
^MyTree(); // It is a tilde :)
// Methods
void AddToTree(std::string el); // Adds a new node somewhere in the DOM
std::string GetTree(); // Inserts the tree in a string
private:
DOMDocument _xmldoc;
};
考虑到由私有(private)构造函数引起的所有限制,并且我只能从 XercesDOMParser 获得 DOMDocument,并且我获得了指针,我该如何实现这一点......如果在构造函数中我这样做:
MyTree::MyTree() {
XercesDOMParser parser;
parser.parse(XMLString::transcode("<...>...</...>"));
this->_xmldoc = parser.getDocument();
}
将文档分配给 _xmldoc 后,构造函数超出范围,解析器被删除,因此它拥有的每个组件都被删除,所以我的 _xmldoc 将指向任何内容...
我该如何解决这个问题???
谢谢...
最佳答案
您需要保留解析器。要么将其作为参数传递(通过引用),使其成为 MyTree
的成员(再次作为引用),要么将其放入单例类中。
(_xmldoc
应该是一个指针,顺便说一下。)
关于c++ - Xerces-C 上的 DOM 元素内存分配管理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4679855/
我之前在 RapidXml 中询问过一个类似的问题,我现在想知道,相同但使用 Xerces-C。 我正在开发一个需要解析 xml 的 C++ 应用程序。 考虑以下几点: xml文件:file1.xml
我支持使用 Xerces-C 进行 XML 解析的遗留 C++ 应用程序。我被 .Net 宠坏了,习惯了使用 XPath 从 DOM 树中选择节点。 有什么方法可以访问 Xerces-C 中一些有限的
我必须将我的项目从 xerces 1 迁移到 xerces 3.1.1,但我找不到 DOMString.hpp。有人知道我在哪里可以找到这门课吗? 最佳答案 DOMString 是 gone在 Xer
我正在使用 JSF 2.0、NetBeans 6.9.1、GlassFish Server 3.1、mojarra 2.0.3 和 JasperReports 3.7.6 开发 Web 应用程序。我的
我在gradle项目中使用Xerces jar,然后在gradle插件中使用该项目的jar:实际上,我正在开发一个gradle插件,其中包含使用gradle项目jar的某些功能的自定义任务;当我尝试运
我收到错误 Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/xerces/util/XMLChar
我在 there 中提到过类似的问题.我正在使用 mvn clean compile site 命令,我的版本是: cobertura.version: 2.5.1 findbugs.version:
我正在 Eclipse 中开发 GWT 应用程序并使用 jdom2 读取一些自定义 xml 属性文件。 在最近的更新之后,我的应用程序现在在尝试读取 xml 文件时失败并出现上述错误。相关堆栈跟踪是:
我安装了 Android Studio 1.5.1 并测试了默认的“Hello World”应用程序,该应用程序完美构建并在我的手机上运行。但是,我尝试对 CardEmulation 执行相同的操作代
这个问题在这里已经有了答案: Xerces error: org.apache.xerces.impl.dv.dtd.DTDDVFactoryImpl (2 个答案) 关闭 5 年前。 我正在使用
我有一个 Sax 解析器类,用于 Swing 应用程序和部署到 GlassFish 的 Web 项目。 该类解析 xml 文件。它在 Netbeans IDE Swing 应用程序(在 IDE 中)和
我有一个 XSD 文件: ... 在 Java 代码中: DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); db
我已经在 linux 上下载并构建了 Xerces-c: Linux xxxx 2.6.24.7-server-3mnb #1 SMP Wed Sep 9 16:34:18 EDT 2009 x86_
我按照 build xerces in linux 的说明进行操作 。/配置 制作 进行安装 但我正在尝试运行来自 Programming Guide 的第一个示例 #include // Othe
我有一个基于 XSD 的 XML,看起来像这样: abc def 我使用的是 C++,我可以成功读取 XML 并对其进行解析。但是我想使用不带命名空间的标签名称获取我的元素,例如
我正在尝试在 Mac 上运行 Xerces。我我们 ./configure CFLAGS="-arch x86_64" CXXFLAGS="-arch x86_64" ./configure --p
有谁知道是否有一个与 Python2.6 兼容的可用 python 库,可以公开 Xerces 功能及其 XML DOM 功能? 我将所需的功能定义为:通过 Xpath 和 XSLT 处理器选择 XM
我想使用 Xerces 从字符串加载 XML 模式,但直到现在,我只能从 URI 加载它: final XMLSchemaLoader xsLoader = new XMLSchemaLoader()
我的问题是: 如果我有以下 XML: 1 然后我将添加以下路径: 2 结果 1 2 我希望能够将它转换成这样:
我需要从自己的流中读取数据,并在到达时使用Xerces / C++(SAX或SAX2)对其进行解析。我已经看到Xerces Java FAQ了,但是Java和C++ API似乎并不匹配。至少,我在C+
我是一名优秀的程序员,十分优秀!