我在一个 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/