0

使用 xml 解析器可以提取 html 文本吗?

详细解释:我有这个简单的xml

<?xml version="1.0" encoding="iso-8859-1"?>
<eventi>
<evento><id_evento>4553</id_evento><descrizione>Lorem Ipsum<a href='http://www.yea.it/yea.asp' target='_blank'><span class='U'>Vai alla pagina di gioco</span></a></descrizione></evento>
</eventi>

我正在用 rapture XML 解析它,同时为 IOS 开发应用程序。当我做

rootXML = [RXMLElement elementFromURL:[NSURL URLWithString:[NSString stringWithFormat:@"%@%@", indXMLdettaglioEvento, idElemento]]];
[rootXML iterateWithRootXPath:@"//evento" usingBlock: ^(RXMLElement *datiXML) {
      NSLog(@"%@",[datiXML child:@"descrizione"].text);;
]}

[datiXML child:@"descrizione"].text 的 nslog 返回没有 html 标记的文本。有可能让它返回整个html吗?

4

2 回答 2

0

您可以使用一些开源库,如 TinyXML、TouchXML 等来解析 XML 文档。

否则,您可以使用 NSXMLParser 编写自己的解析器。

希望这可以帮助 !!!

于 2013-03-08T12:27:43.320 回答
0
 [datiXML child:@"descrizione"]

返回一个已解析的 XML 项,其中包含 Lorem Ipsum 文本,但它本身也有子项!我想您会发现第一个孩子将成为您的链接锚的 XML 项:

 [[dataiXML child::@"descrizione"] child: @"a"]  => XML item for link
 [[[dataiXML child::@"descrizione"] child: @"a"] child: @"span"] => XML item for span

所以你需要遍历整个树来解析你的xHTML——但我想你会发现它就在那里。

正如之前的评论者所说,许多有效的 HTML 页面不是有效的 XML。并且许多“工作”的 HTML 页面是无效的!因此,这不是编写 Web 浏览器的好策略。但这不是我们在这里所做的;如果您正在与之交谈的服务提供 XML,那么使用 XML 解析器来解析它是非常有意义的!

于 2013-03-08T13:27:40.640 回答