西班牙
斯潘4
你好,
我试图将XML中存储的信息扁平化为一个表格结构。某些属性可以重复(例如,可以用不同的语言或字母表提供水域名称)。我的猜测是XMLXQueryExploder转换器应该能够在那里扮演一个角色,或者可能只是一个listenplider。我想使用XQuery会更合适,但是我还没有找到合适的语法。基本上,我需要从附加的XML中提取名称信息,并将其填充到表格结构(如shp或gdb表)中。
所需的布局如下:
FeatureId | NameType | ISOLanguageCode | LanguageCode | PrimaryName | IsoScriptCode | NameText | NotationAlphabet | GeoActionType | GeoView |
93年e05831 - 25 - b5 - 4 df2 b264 - 179 c9b7914b2 | StandardName | 英格 | 英语 | 真正的 | Latn | 波斯湾 | 拉丁 | 删除 | ZAL |
93年e05831 - 25 - b5 - 4 df2 b264 - 179 c9b7914b2 | StandardName | 英格 | 英语 | 真正的 | Latn | 阿拉伯海湾 | 拉丁 | 添加 | ZAL |
93年e05831 - 25 - b5 - 4 df2 b264 - 179 c9b7914b2 | StandardName | ARA | 阿拉伯语 | 假 | 阿拉伯 | اUØ®UجاUعربU | 阿拉伯语 | 添加 | ZAL |
00004153 - 3200 - 3 - c00 - 0000 - 000041 - dcf9ac | StandardName | 和 | 音译 | 真正的 | Latn | 印度洋 | 拉丁 | ||
00004153 - 3200 - 3 - c00 - 0000 - 000041 - dcf9ac | StandardName | 犏牛 | 中国人 | 假 | 汉斯 | 一个°一º¦æ´ | HanSimplified | ||
00004153 - 3200 - 3 - c00 - 0000 - 000041 - dcf9ac | StandardName | 犏牛 | 中国人 | 假 | 常到之处 | 一个°一º¦æ´ | HanTraditional | ||
00004153 - 3200 - 3 - c00 - 0000 - 000041 - dcf9ac | StandardName | 英格 | 英语 | 假 | Latn | 印度洋 | 拉丁 | ||
00004153 - 3200 - 3 - c00 - 0000 - 000041 - dcf9ac | StandardName | FRE | 法国 | 假 | Latn | 印度的海洋 | 拉丁 | ||
00004153 - 3200 - 3 - c00 - 0000 - 000041 - dcf9ac | StandardName | 德吴 | 德国 | 假 | Latn | 印度Ozean | 拉丁 | ||
00004153 - 3200 - 3 - c00 - 0000 - 000041 - dcf9ac | StandardName | ITA | 意大利 | 假 | Latn | Oceano Indiano | 拉丁 | ||
00004153 - 3200 - 3 - c00 - 0000 - 000041 - dcf9ac | StandardName | 日本 | 日本 | 假 | Jpan | 一个¤一³一æ´ | 日本 | ||
00004153 - 3200 - 3 - c00 - 0000 - 000041 - dcf9ac | StandardName | 侯尔 | 韩国 | 假 | 科莱 | 我¸e我 | 韩国 | ||
… | |||||||||
00004153 - 3200 - 3 - c00 - 0000 - 000041 - dcf9ac | StandardName | 俄文 | 俄罗斯 | 假 | Cyrl | ÐндийNкийÐкеан | 西里尔字母 | ||
00004153 - 3200 - 3 - c00 - 0000 - 000041 - dcf9ac | StandardName | 俄文 | 俄罗斯 | 假 | Latn | Indiyskiy Okean | 拉丁 | ||
… | |||||||||
00004436 - 3800 - 3 - c00 - 0000 - 0000434 - b2ce8 | StandardName | 德吴 | 德国 | 真正的 | Latn | Jadebusen | 拉丁 | ||
00004436 - 3800 - 3 - c00 - 0000 - 0000434 - b2ce8 | AlternateName | 德吴 | 德国 | 假 | Latn | Oldoogrinne | 拉丁 |
每个水域都有自己的特征id,每个名称组合都会重复此特征id。
你能建议哪种方法最适合这样做吗?实际上,我只需要以迭代的方式分解每个列表(如果有)和子列表,直到所有列表都被分解。
谢谢您!
奥利维尔
我想:一个名为“complexAttribute”的元素应该映射到目标表中的一个记录,该元素的“attributeType”属性是“TTOM Name:NameSet.nametrantelliterationset”[已编辑]。但是,来自其父节点和同级节点的一些元素/属性值也应该保存到相应的字段中。
如果我上面的猜测是正确的,那么XMLFragmenter和XMLXQueryExtractor的组合可能会对您有所帮助。另外,如果您可以澄清目标表中的每个字段与源XML文档中的元素/属性之间的映射规则,我们可以建议一个更具体的解决方案。
这是一个使用XMLFragmenter和XMLXQueryExtracctor对的例子:xmlfragmenter-xmlxqueryextractor-example.fmwt(FME 2018.1.1.0)
希望这个有帮助。
升级:- 2. - fmwt xmlfragmenter - xmlxqueryextractor例子(FME 2018.1.1.0)
你好@olivier,
我建议尝试使用XMLFragmenter而不是XMLQueryExtractor,它比Extractor更容易使用,也不那么神秘。在XMLFragmenter中,可以排除元素(“要忽略的元素”)。这将需要打开展平,默认情况下这是禁用的。
XMLFragmenter的功能类似于一个XML读取器,可以在这里找到一个示例:https://knowledge.亚搏在线safe.com/articles/28309/tutorial-getting-started-with-xml-reading.html
最棘手的部分是为XMLFragmenter获得正确的特性路径。
我希望这能有帮助!
?2019安全亚搏在线软件公司|合法的