Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
寻找XML解析器_Xml_Dom_Xpath_Parsing - Fatal编程技术网

寻找XML解析器

寻找XML解析器,xml,dom,xpath,parsing,Xml,Dom,Xpath,Parsing,我的任务是找到一个开源DOM XML解析器。解析器必须至少支持XPath 1.0。需要模式支持,但不是交易破坏者 我们正在解析的文件很小,因此速度和内存消耗不是一个大问题 任何OO语言(C++、C#、Java等) 为了澄清这一点,我们的计划是将XML解析器集成到应用程序中,这比使用外部解析器要紧密得多。我们正在创建一个基于XML的自适应对象模型(更改XML,更改对象模型)。为此,我们需要在相当低的级别上集成解析器。这会产生一种优雅的程度,需要有经验才能被理解(谢谢你,约德先生)。如果我们不具备通

我的任务是找到一个开源DOM XML解析器。解析器必须至少支持XPath 1.0。需要模式支持,但不是交易破坏者

我们正在解析的文件很小,因此速度和内存消耗不是一个大问题

任何OO语言(C++、C#、Java等)

为了澄清这一点,我们的计划是将XML解析器集成到应用程序中,这比使用外部解析器要紧密得多。我们正在创建一个基于XML的自适应对象模型(更改XML,更改对象模型)。为此,我们需要在相当低的级别上集成解析器。这会产生一种优雅的程度,需要有经验才能被理解(谢谢你,约德先生)。如果我们不具备通过XPath导航此对象模型的能力,那么这种优雅的一部分就会消失


我们已经创建了一个使用操作系统提供的解析器的原型。它工作得很好,但存在复杂性和性能问题。但是,嘿,这是一个原型。现在我想做真正的事情,我可以从头开始编写解析器。(我已经完成了这一部分,它有点简单。)现在,XPath引擎是一个不同的故事。我很确定我不会在一个周末内完成这件事

要很好地回答这个问题,我认为您需要提供更多的上下文。话虽如此,我发现.NET3.5中支持LINQtoXML的Xml新对象模型(XElement等)大大提高了Xml导航的效率,我的意思是,与使用DOM相比,使用C标准库更容易、更好?它们是否有缺陷

java也是这样吗?这一切都是从C++开始的。我不理解这种缺乏

在谷歌上搜索“XML解析器XPATH”可以找到许多关于CPAN、JDOM和J2SE、cocoa、MSXML等的热门内容

您是刚刚开始搜索,还是标准答案不够

编辑:

您的澄清告诉我您不想使用它,您想使用源代码在您自己的XML解析器中启动您自己的XPATH模块吗?对吗?你不在乎语言,因为你想要的只是设计,而不是代码?

永远优秀的语言在这里可能对你有用。它是用于JDom和Dom4J的Java XPath实现

在重构公共功能以遍历这两个DOM实现时,您现在有了一个XPath引擎,它可以查询任何树形模型。你只需要写他们称之为导航器的东西,这相对来说比较简单

从:

如何支持不同的对象模型

唯一需要的是一个 接口的实现 org.jaxen.Navigator。不是所有的 接口是必需的,并且是默认值 以以下形式实施: org.jaxen.DefaultNavigator也是 提供

因为许多XPath轴可以 相互定义(适用于 例如,祖先轴仅仅是一个 父级(仅递归应用) 下面介绍了一些低级轴迭代器 最初开始时需要。属于 当然,你可以实施它们 直接,而不是依靠 杰克森的写作能力


我发现编写这些代码的速度相对较快。

如果您只需要基于设计逻辑而不是代码,那么您可以研究Ruby的REXML库。它是面向对象的,非常好,并且具有完整的XPath支持


MRI用C和Ruby实现。JRuby有一个Java实现。

可能不太可能,但jQuery显然支持引用DOM的XPath语法;我认为它的源代码是可访问的。< /P>问题没有意义:C++、java和我想象C++都有XML解析,在语言层中可用。你想做什么?所以你真的想要一个开源的XPath能解析器来和你自己的解析器一起使用吗?-复制XPath部分?你这样做是出于个人兴趣和好奇心吗?也许是一个奇特的操作系统?我正在研究自适应对象模型(使用元数据控制对象模型拓扑)。正如我所说,原型实际上工作得相当好,但我知道我可以用自己的解析器做得更好。DOM兼容性是一项要求吗?是的,我们需要DOM兼容性。我还没有研究完这个问题,但我现在有了一个可行的解决方案。我编写了自己的类DOM解析器。我使用System.Xml.XmlTextReader进行实际的解析。我的实现的对象模型是System.Xml.XmlDocument对象模型的轻量级版本。它为我提供了所需的功能(DOM级别1核心接口和XPath支持),但开销要小得多。我有一个遗留应用程序,我们将代码粘在一起,将其内部状态表示为XML(类似于DOM解析器)。现在我想通过XPath导航这个“DOM”。将内部状态表示为XMLDOM很容易。我发现编写一个XPath解析器来导航DOM并不是那么容易。Linq引起了我的兴趣,但我无法理解使用它导航和对象模型可能意味着什么。你是对的。一段时间以来,我一直在寻找一个合适的XPath实现示例。如果需要的话,我会自己写的,但是一个好的例子永远不会有坏处。一位同事建议我在这里发帖。Jamesh,我只有几个小时的时间来检查Jaxen,但我想让你知道它看起来很有前途。非常感谢你的建议。