编辑。两次头痛之前,我仍然充满希望。现在我认为将文件重新格式化以避免像同一行中的元素这样的奇怪事情并且执行一些空白字符清理会更好。但这很奇怪。什么错误。
嗯,这很奇怪,但我仍然在写一个答案。
我正在做一些测试,使用一个示例XML和一些从NSXML获得的行/列号。
<?xml version="1.0"?>
<catalog class="something">
<book id="bk101">
<author>Gambardella, Matthew</author>
<title>XML Developer's Guide</title>
<genre>Computer</genre>
<price>44.95</price>
<publish_date>2000-10-01</publish_date>
<description>An in-depth look at creating applications
with XML.</description>
...
在
column, line
OPEN/CLOS element
等形式的日志(我在智能调试漂亮的小白)
15, 2 (A)
OPEN catalog
12, 3 (B)
OPEN book
14, 4
OPEN author
CLOS author
13, 5
OPEN title
CLOS title
13, 6
OPEN genre
CLOS genre
13, 7
OPEN price
CLOS price
20, 8
OPEN publish_date
CLOS publish_date
19, 9
OPEN description
CLOS description
CLOS book
...
有一种永远奏效一个公式,即:
columnPosition = columnNumber - length("<element>")
例如,考虑第二行和日志附近(A):
<catalog class="something">
我希望columnPosition
等于0
,其实:
len("<catalog class>") = 15
0 = 15 - length("<catalog class>")
注意NSXML的columnNumber
仍然是15
不管我在“class”标签内部写入,但是当我移除整个标签时,它是9
。用下面的一行:
<catalog>
我希望columnPosition
等于0
,其实:
length("<catalog>") = 9
0 = 9 - length("<catalog>")
现在,考虑下面一行,在日志(B):
<book id="bk101">
我期待columnNumber
等于3
。其实:
length("<book id>") = 9
3 = 12 - length("<book id>")
好吧,这很奇怪。我认为这不是一个很好的解决方案,但至少它是有效的。我不能简单地删除字符串的开头空格,因为它没有,如果有这样一行:
<catalog class="something"><book id="bk101">
你觉得这个怎么样?我觉得挺有意思的,但是如果没有别的办法,我会检查这个答案作为接受的答案。我期待着你们的想法。
避免了简洁和缺乏意志的正式证明。
我在苹果bug记者提交了一个错误,这似乎并不像预期的行为。 – Donovan