GPX 架构验证问题

2024-02-17

我正在构建一个主要使用 GPX 文件作为输入数据的应用程序。鉴于 gpx 文件应该由 gpx 模式定义(如此处定义:http://www.topografix.com/gpx.asp http://www.topografix.com/gpx.asp),我教给我的应用程序的第一件事是根据模式验证输入文件(当然要记住不同的版本)。到目前为止,一切都很好。对于我测试的初始文件,一切都很完美。但是,有时我使用 .gpx 文件,这些文件对于相关的 gpx 架构来说是无效的。因此,我尝试使用其他类似的工具导入它们,奇怪的是,没有返回错误并且文件被完美解析。所以,最合乎逻辑的结论是我的代码有问题。然而,经过彻底的调查,我的代码完全没问题,目前没有任何问题。这甚至通过 topografix.com 建议的验证技术得到了验证(http://www.topografix.com/gpx_validation.asp http://www.topografix.com/gpx_validation.asp) ,并再次得出文件无效的结论。

所以,事实证明有一些 GPS 设备/GPS 记录系统/等等。它生成不符合官方 GPX 架构的 .gpx 文件。这个结论让我提出一个问题:为什么?我真的不明白它背后的想法。此外,对于我发现的大多数无效文件,问题不在于可能被视为附加功能,而在于某些元素的子元素不遵循正确的顺序,我认为这是完全愚蠢的。

这让我想问你两个问题。首先,如果有人能向我解释为什么我在网上找到的很多 GPX 文件不符合官方 GPX 架构,我会很高兴。其次,我想问一下,如果你要解析GPX文件,你如何处理这个问题。毕竟,跟踪点无论如何都会在文件中,所以我是否只需忽略 XML 模式验证并继续直接解析?但话又说回来,如果属性名称拼写错误,我的系统就会崩溃。任何有关如何处理解析 GPS 文件的信息将不胜感激。

感谢您的时间和帮助。

Regards,

Petar

编辑:我发布了一个新线程:GPX 解析模式和“标准” https://stackoverflow.com/questions/8319556/gpx-parsing-patterns-and-standards我问的是人们在实践中如何实际解析 GPX 文件。如果您有想法,请在那里发布您的答案。


架构作者选择使用<xs:sequence>代替<xs:all>。 XSD 序列是特定于订单的。

拼写错误的属性名称将是无效输入。你必须优雅地验证和失败。计算机不能很好地处理歧义。

希望有帮助...

UPDATE:

抱歉,请允许我详细说明一下。该问题是由模式作者和 GPX 输出作者(各种软件包和设备)创建的。

基本上,如果一个人可以查看一段数据并理解其含义,那么软件实现者就有责任创建灵活的验证以使程序可用。

例如,假设您有一个输入字段,您应该输入美元金额,并且用户输入“$.05”,则软件应该足够智能,能够将其识别为 5 美分,并且足够智能,能够识别有一个前面有空格,没用。

这同样适用于来自设备的文件。是的,问题是他们造成的。是的,当格式有一个非常好的严格定义时,必须将设备的输出视为用户输入是荒谬的。但这就是您当前面临的问题。最终,没有人关心您必须克服哪些技术挑战才能使其发挥作用。他们关心的只是“它有用吗”和“这对我来说有多大用处”。

因此,如果您发现字段顺序混乱,但所有必需的数据都存在,请重新排列字段,以便它们通过验证。让您的导入更加灵活。如果缺少间隙,请使用警告消息填充数据间隙。但是,让它发挥作用。

除了在根据 XSD 验证数据之前尝试修改数据之外,如果您发现验证错误不断地由字段的顺序引起(这是 XSD 中 xs:sequence 和 xs:sequence 之间的常见误解),您还可以做另一件事xs:all),就是改变你的XSD。将其从顺序切换为全部。你可以先尝试一下官方的XSD。如果通过了,那么您就不必验证较宽松的版本。

我希望这有帮助...

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

GPX 架构验证问题 的相关文章

  • 使用 GWT 读取非常大的本地 XML 文件

    我正在使用 GWT 构建我的第一个 Java 应用程序 它必须从一个非常大的 XML 文件中读取数据 当我尝试发送对文件中信息的请求时遇到问题 并且我不太确定它是否与文件的大小或我的语义有关 在我的程序中 我有以下内容 static fin
  • 单元测试报告的 XML 格式规范(DTD、XSD..)

    许多工具为单元测试报告生成和使用相同的 XML 文件格式 例子 source http junitpdfreport cvs sourceforge net junitpdfreport src resources examples tes
  • 删除Android所有语言中的字符串

    我有一个包含多个翻译的应用程序 我想删除一些字符串 我怎样才能重构并删除它们一次 例如在默认情况下strings xml文件并自动将删除传播到其他翻译的其他 strings xml 文件 您可以通过 Android Studio 中的 翻译
  • Android:默认 XML 编辑器不再打开 [不支持的内容类型错误]

    我使用 Eclipse 在 Android 中开发应用程序已经有一段时间了 我最近将Android SDK平台更新到3 0 API 11 现在 我无法通过双击打开 AndroidManifest xml 或 Layout 文件夹中的任何其他
  • 位图内存不足错误

    我对这个错误有疑问 我从 URL 制作网站图标解析器 我这样做是这样的 public class GrabIconsFromWebPage public static String replaceUrl String url StringB
  • iOS 中的 CSV 逐行解析

    我正在 Objective c 中解析 CSV 文件 该文件包含如下内容 line 40 Rising searches line 41 nabi avc Breakout line 42 stonewall 700 line 43 med
  • 正则表达式,如果模式在引号中则忽略模式

    编写一个非常简单的脚本解析器作为学校项目的一部分 虽然这不是必需的 但我很好奇是否可以仅使用正则表达式来完成 语法类似于 ASP 其中脚本以 结尾 它只支持一个命令 pr 与echo或Response Write相同 现在我正在使用这个正则
  • 自定义 XML 文件比较

    我看过很多关于 XML 比较的帖子 但我看过的没有一个能解决我的问题 我们有一些 XML 格式的文本文档 产品描述 带有标题和段落 正在更新 即版本化 我的任务是制作变更摘要 也就是说 我们想要获取两个连续的文件并生成第三个 标题结构 大纲
  • Android - 保存动态更改布局的状态

    我有一个布局 用户可以在其中添加按钮并将其放置在他们想要的位置 我想允许用户保存他们的布局 以便下次打开应用程序时加载它 有谁知道我是否可以将文件保存到 SD 卡上 或者 我可以使用某种layout getXml 方法并将其放入我的应用程序
  • 将 LINQ 嵌套到 XML

    我有一些来自遗留应用程序的非标准 XML
  • EditorTemplate 的嵌套模型的 ASP.NET MVC3 条件验证

    假设你有一个 viewModel public class CreatePersonViewModel Required public bool HasDeliveryAddress get set Should only be valid
  • 我希望 jQuery 验证器向表单元素的父级添加一个类

    我该如何使用jQuery 验证器 http docs jquery com Plugins Validation添加 删除类名 例如validate 在表单元素的父元素上 li 这样我就可以通过仅设置一个类名来设置与该元素相关的所有内容的样
  • 我可以在 XSLT 中创建模板吗?

    我想使用 XSLT 从 XML 创建 ASP NET 用户控件 目前我真的把结果一点一点地拼凑起来
  • 合并xml文档

    我遇到的所有关于合并 XML 文档的解决方案都无法实现我的愿望 让我解释 XML 文档 1 a b title Original Section b title Original Child Section b b title Origin
  • 如何更换HXT中的节点?

    给定一个示例 xml 文件
  • 对一组复选框使用 HTML5“必需”属性?

    使用支持 HTML5 的较新浏览器 例如 FireFox 4 时 并且表单字段具有属性required required 并且表单字段为空 空白 然后点击提交按钮 浏览器检测到 必填 字段为空 并且不提交表单 相反 浏览器会显示一条提示 要
  • 仅当表单已提交时才触发 jQuery 表单验证?

    不引人注目的验证基于这样的想法 don t进行表单验证 直到用户提交表单 一旦发生这种情况 如果表单上的某些内容无效 那么一旦用户更改了每个字段 就会立即验证它 我想做的是 不显眼地 触发表单元素的验证 也就是说 only如果用户已尝试提交
  • 使用 xmllint 检查 XML 语法

    我在处理某些 XML 打印文件时遇到问题 其中源系统忽略将某些字符转换为其等效的 XML 语法 例如 未转换为 amp 有没有办法用 xmllint 捕获这个 我不需要使用 XSD 检查一般树结构 xmllint noout your te
  • 有没有办法改变野牛的弹性启动状态?

    我在词法分析器中定义了不同的状态 这些状态的变化不取决于令牌 而是取决于令牌序列 类似于模板引擎的工作方式 我可以定义更长的标记 但我更喜欢这种方法 您可以将一个函数粘贴到使用 BEGIN 宏的 l 文件的第三部分中 然后从您的 bison
  • Ebay api GetSellerList,解析响应 XML

    我正在使用 eBay 交易 api 来获取当前列出的卖家股票 我正在使用 GetSellerList 调用 我在解析 xml 时遇到问题 然后将其插入到网站商店中 这是 xml 请求

随机推荐

  • 安装设备所有者应用程序的更新

    有谁知道更新发生时通过 Google Play 分发的设备所有者应用程序的生产行为是什么 正如我们所知 安装设备所有者应用程序涉及一些动机并且并不容易 重置为出厂默认设置 然后通过 NFC 为设备提供第二个设备等 因此 即使我们认为这一步已
  • g++ 两次链接同一个库会出现问题吗?

    我注意到 当我使用 gcc 制作应用程序并在链接阶段查看输出时 我看到以下库包含两次 home rb01 opt trx HEAD gcc 4 2 4 lib lib64 libstdc so 所以我只是想知道这是 g gcc 的问题还是第
  • 有什么解决方案可以将向量解包为 C++ 中的函数参数吗?

    我实际上正在考虑类似于 python 中的 运算符的东西 如下所示 args 1 2 4 f args C 中有类似的解决方案吗 我能想到的如下 template
  • NetBeans + GWT 2.2.0 + Maven编译问题

    我正在尝试使用 NetBeans 6 9 中的 Google Web Toolkit 创建 Maven Web 应用程序项目 我已按照该视频中显示的步骤进行操作 http www youtube com watch v M iVZ5TJ21
  • 我可以更改点图上的一个标记大小吗?

    使用 Seaborn 的pointplot我创建了以下图像 我想知道是否可以将每个标记的大小更改为唯一值 该图像是通过调用制作的 sns pointplot x Partying y Province ci 95 data df join
  • 发布表单时的 post 与 put

    当评估表单是否已提交时 我检查方法是否为 post 而不是 get 有人告诉我 这是一个好方法 可以了解表单是通过单击 提交 按钮提交的 而不仅仅是由在 url 中传递数据的脚本提交的 put 方法怎么样 看起来和 post 很相似 是否可
  • AngularJS $location 没有模板

    我想使用 locationProviderAngularJS 中的服务 无需在我的中渲染新的 HTML 模板ng view 我有一个div通过按需显示的元素ng show绑定到数据元素的存在 我想通过以下方式将其连接到浏览器位置 locat
  • 使用三元运算符的缺点

    我的源代码中有以下语句 int tableField1 int tableField2 int propertyField1 int propertyField2 if tableField1 null propertyField1 tab
  • 在C中将XImage写入.bmp文件

    我正在使用以下代码将 XImage 写入文件 bitmap0 bmp 但是当我在 fedora 中使用 imageViewer 打开新创建的文件时 它会给出 文件过早结束 错误并且不显示任何内容 谁能指出以下代码中的问题吗 typedef
  • Synthesia 可以很好地播放 MIDI 文件而没有任何音符关闭事件吗?

    我有一个 mid file this https pastebin com amkth128具体一个 除了标题块之外 这里是 MIDI 的相关部分 第一个轨道块仅包含元事件 并被描述为 4D 54 72 6B 00 00 00 52 Tra
  • 从公钥+私钥创建 RSAParamaters 对象

    我需要使用私钥和公钥 key 和 cer 文件 在 Net 中创建 RSAParameters 对象 是否可以在 Net 中做到这一点而不使用第三方软件 如果是这样 我应该去哪里寻找 我最终需要从该对象中提取指数 模数 D P Q DP D
  • XCode 4.3 命令行工具包校验和无效

    Apple 提供的用于使用 Xcode 4 3 安装命令行工具的软件包已损坏 我似乎需要它 因为我正在开发一些命令行工具 有没有人找到 Apple 提供的 Xcode 4 3 的替代命令行包 或者该主题的解决方法 Xcode 包含一个新的
  • 为什么指定的初始化器不能调用其基类中的辅助初始化器?

    根据文档 Objective C 中类的指定初始值设定项必须调用其基类的指定初始值设定项 另一个规则是辅助初始化器必须调用其自己类的指定初始化器 但是 如果遵循第二条规则 为什么指定的初始值设定项不能调用其基类中的辅助初始值设定项 这个基本
  • Flutter 每台设备一个帐户

    如何使一个帐户下的应用程序中只有一个用户 我使用 flutter firebase auth 电子邮件和密码 例如 我有一个帐户 只有我可以从我的设备登录 如果有人发现我的帐户 他将无法登录 谢谢你 我只是给你一个想法如何去做 在cloud
  • SecureRandom 的行为

    尽管在关注了很多文章之后SecureRandom 我在使用时遇到了疑问SecureRandomJava 中的安全 API 在下面的例子中 public class SecureRandomNumber public static void
  • Linux 命令“ll”不起作用[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我可以使用我的用户运行 ll 命令 但不能使用 sudo 它给我错误 因为找不到命令 创建别名ll alias ll ls al
  • Qt 读取访问冲突位于:0x0,flags=0x0(第一次机会)

    我有一段非常简单的代码如下 Letter Vakje geefLetter const return m letter Vakje 类使用 NULL 指针进行初始化m letter 但我仍然收到读取访问冲突错误 有人可以帮忙吗 这是调用该函
  • 如何关闭发生错误后保持打开状态的文件?

    我在用 fid fopen fgfg txt 打开一个文件 有时在我设法关闭文件之前会发生错误 在关闭 Matlab 之前我无法对该文件执行任何操作 如果发生错误 如何关闭文件 首先 你可以使用命令 fclose all 其次 你可以使用试
  • 如何使用 addObserver 闭包方法在 Swift 5 中删除Observer

    这是我的第一篇文章 我是日本 iOS 工程师 这个月刚入职 我有一个麻烦removeObserver的方法NotificationCenter在 Swift 5 中 我通过使用闭包类型将观察者添加到 ViewController VC ad
  • GPX 架构验证问题

    我正在构建一个主要使用 GPX 文件作为输入数据的应用程序 鉴于 gpx 文件应该由 gpx 模式定义 如此处定义 http www topografix com gpx asp http www topografix com gpx as