小编Rob*_*rto的帖子

在iPhone上使用NSXMLParser解析html实体

我想我读过与这个问题有关的每一个网页,但我仍然无法找到解决方案,所以我在这里.

我有一个不受我控制的HTML网页,我需要从我的iPhone应用程序解析它.这是我正在谈论的网页示例:

<HTML>
  <HEAD>
    <META http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
  </HEAD>
  <BODY>
    <LI class="bye bye" rel="hello 1">
      <H5 class="onlytext">
        <A name="morning_part">morning</A>
      </H5>
      <DIV class="mydiv">
        <SPAN class="myclass">something about you</SPAN> 
        <SPAN class="anotherclass">
          <A href="http://www.google.it">Bye Bye &egrave; un saluto</A>
        </SPAN>
      </DIV>
    </LI>
  </BODY>
</HTML>
Run Code Online (Sandbox Code Playgroud)

我正在使用NSXMLParser,它一直顺利,直到找到èhtml实体.它调用foundCharacters:for"Bye Bye",然后调用resolveExternalEntityName:systemID ::,其实体名称为"egrave".在这个方法中,我只是返回在NSData中转换的字符"è",再次调用foundCharacters将字符串"è"添加到前一个"Bye Bye",然后解析器引发NSXMLParserUndeclaredEntityError错误.

我没有DTD,我无法更改我正在解析的html文件.你对这个问题有什么想法吗?罗伯,先谢谢你们所有人.

更新(12/03/2010).在Griffo的建议之后我得到了这样的结论:

data = [self replaceHtmlEntities:data];
NSXMLParser *parser = [[NSXMLParser alloc] initWithData:data];
[parser setDelegate:self];
[parser parse];
Run Code Online (Sandbox Code Playgroud)

其中replaceHtmlEntities:(NSData*)是这样的:

- (NSData *)replaceHtmlEntities:(NSData *)data {

    NSString *htmlCode = [[NSString alloc] initWithData:data …
Run Code Online (Sandbox Code Playgroud)

iphone parsing html-entities nsxmlparser

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

在 Nodejs 上使用 DNS 发现 Consul 服务

TL; 博士

大家好,我正在尝试通过Consul DNS 接口从用 Express 编写的 nodejs 前端调用 nodejs 后端微服务,但出现错误。

我正在使用nodejs dns api为唯一节点应用程序设置 dns,以便对本地 Consul DNS 接口进行后续 dns.resolve() 调用。

目标

我希望能够向我的后端服务发出 http 请求,而无需在我的客户端代码中连接其 IP 和端口。我也不想编写自定义代码来查询 Consul HTTP API,以便在我需要调用它时为我的服务获取 ip:port 对。

问题

问题是,当我使用axios(类似于request)对后端服务进行 HTTP 调用时,我总是收到错误消息,因为它无法解析地址。Axios 似乎没有使用我之前设置的 dns:

dns.setServers(['127.0.0.1:8600']);
Run Code Online (Sandbox Code Playgroud)

更新_1

使用 consul 的 -recursor 命令行选项将虚拟机 (/etc/resolv.conf) 的 dns 设置为 localhost e,使用默认 dns 一切正常!我仍然想了解我在仅在我的 nodejs 应用程序上设置 dns 时做错了什么。

设置

  • 1 个带有 nodejs 进程的 FE 节点,运行带有 Expressjs 的简单网络服务器。在 app.get('/') 路由中,它通过 consul 和 axios(如请求)对名为 be01 的后端服务进行 …

dns service-discovery node.js consul

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