xml - 哪些字符永远不能出现在 URL 中?

标签 xml url

我在一个 XML 文件中存储了大量的 URL(大约 100,000 个)(连同一些其他数据)。它在使用较少的 URL 时工作得很好,但是现在,XML 文件变得非常大(因为标签和缩进)并且解析起来很慢。所以我考虑将所有 URL 分组到一个 XML 元素中,为此我需要一个分隔符。例如,我想从这个开始:

<document>
  <bigGroupOfURLs>
    <OneURL>
      <nameOfData1>data1_1</nameOfData1>
      <nameOfData2>data1_2</nameOfData2>
      <URL>www.site1.com</URL>
    </OneURL>
    <OneURL>
      <nameOfData1>data2_1</nameOfData1>
      <nameOfData2>data2_2</nameOfData2>
      <URL>www.site2.com</URL>
    </OneURL>
  </bigGroupOfURLs>
  <someOtherData>...</someOtherData>
</document>

像这样(但不使用#):

<document>
  <bigGroupOfURLs>
    data1#data2#www.site1.com#data1#data2#www.site2.com
  </bigGroupOfURLs>
  <someOtherData>...</someOtherData>
</document>

这些 URL 将来自 HTML 文件中的标签,因此它们可以带有各种非标准字符。例如,以下是可能包含的示例:

<a href="http://ja.wikipedia.org/wiki/メインページ">メインページ</a>
<a href="http://en.wikipedia.org/wiki/Stack Overflow">Stack Overflow</a>

在那里,我们可以看到 UTF-8 字符和一个空格。这些 URL 被正确解释,我想将它们存储在那里。那么,哪个字符保证永远不会出现在 URL 中?我希望它是一个可打印的字符。请注意,这将在 XML 文件中,因此我可能不应该使用字符 </> .

最佳答案

“URL”的定义不止一种。该术语经常用于“URI”或“IRI”更正确的地方。许多系统试图变得宽容,并允许根据规范在技术上不合法的事情; Postel 法则适用于此,其不可避免的后果是,如果某些系统开始对其接受的内容开放,则其他所有人都必须效仿。

一个非常安全的分隔符是单个空格,尤其是当您注意确保 URL 中的任何空格都被正确 % 编码为 %20 时。

但是在使用这样的微语法之前,我想确信 XML 解析时间确实是瓶颈。

关于xml - 哪些字符永远不能出现在 URL 中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19256255/

相关文章:

java - Android - Fragment 在 Activity 的 Buttons 后面

javascript - InDesign 脚本 : Deleting elements from the structure panel

ruby-on-rails - Rails URL 中的标记链

url - URL 中的数字如何解析为域名?

javascript - 根据文本框中的值范围重定向到 iframe 中的 URL

xml - BIRT:无法检索 XML 数据源。 XML 数据源文件无效或文件不存在

java - JAXB 的通用适配器

sql - 使 ID 属性在 XML 中唯一

url - 如何在 opencart 中制作自定义 SEO url?

java - 为 HttpClient 请求转义 URL 中的 & 符号