【发布时间】:2017-06-27 19:21:28
【问题描述】:
我有一个要解析的 XML 并将其加载到数据框中。 XML 有重复的标签,所以使用
xmldataframe [<-.data.frame(*tmp*, i, names(nodes[[i]]), value = c("C", ) 中的错误:
列的重复下标
当我手动删除重复的标签并尝试执行它时。但问题是我有大量的实时 XML,我无法纠正所有这些,因为我找不到重复的标签。
- 有没有办法找出重复的 TAG,以便我可以手动删除?
- 如果有重复项,我可以将其加入数据框中的同一列吗?
这里是示例 XML。
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<IesEnhancedAttributes>
<EnhancedAttribute>
<action>C</action>
<cleiCode>SDDFDFDFD</cleiCode>
<physicalDescription>Small Form Factor(SFF), (e.g., SFP, GBIC, XFP, XPAK)</physicalDescription>
<height_metric unit="mm">8.6</height_metric>
<height_english unit="in">0.339</height_english>
<width_metric unit="mm">13.7</width_metric>
<width_english unit="in">0.539</width_english>
<depth_metric unit="mm">56.5</depth_metric>
<depth_english unit="in">2.224</depth_english>
<depth_english unit="in">3.333</depth_english>
<weight_metric unit="NS"></weight_metric>
<weight_english unit="NS"></weight_english>
<MaximumPowerUsage unit="NA"></MaximumPowerUsage>
<operatingTemperature_metric_min unit="NS"></operatingTemperature_metric_min>
<operatingTemperature_metric_max unit="NS"></operatingTemperature_metric_max>
<operatingTemperature_english_min unit="NS"></operatingTemperature_english_min>
<operatingTemperature_english_max unit="NS"></operatingTemperature_english_max>
<storageTemperature_metric_min unit="NS"></storageTemperature_metric_min>
<storageTemperature_metric_max unit="NS"></storageTemperature_metric_max>
<storageTemperature_english_min unit="NS"></storageTemperature_english_min>
<storageTemperature_english_max unit="NS"></storageTemperature_english_max>
<humidity_min unit="NS">0</humidity_min>
<humidity_max unit="NS">0</humidity_max>
<altitude_metric_min unit="NS"></altitude_metric_min>
<altitude_metric_max unit="NS"></altitude_metric_max>
<altitude_english_min unit="NS"></altitude_english_min>
<altitude_english_max unit="NS"></altitude_english_max>
<alarmCapable>Y</alarmCapable>
<PCNChange></PCNChange>
<orderingCode>81.SOC12IR1131S</orderingCode>
<maximumHeatDissipation_metric unit="NS"></maximumHeatDissipation_metric>
<maximumHeatDissipation_english unit="NS"></maximumHeatDissipation_english>
<frameSpacing_metric unit="NA"></frameSpacing_metric>
<frameSpacing_english unit="NA"></frameSpacing_english>
</EnhancedAttribute>
<EnhancedAttribute>
<action>C</action>
<cleiCode>FDFDFDFDFDF</cleiCode>
<physicalDescription>Small Form Factor(SFF), (e.g., SFP, GBIC, XFP, XPAK)</physicalDescription>
<height_metric unit="mm">8.6</height_metric>
<height_english unit="in">0.339</height_english>
<width_metric unit="mm">13.7</width_metric>
<width_english unit="in">0.539</width_english>
<depth_metric unit="mm">56.5</depth_metric>
<depth_english unit="in">2.224</depth_english>
<weight_metric unit="NS"></weight_metric>
<weight_english unit="NS"></weight_english>
<MaximumPowerUsage unit="NA"></MaximumPowerUsage>
<operatingTemperature_metric_min unit="NS"></operatingTemperature_metric_min>
<operatingTemperature_metric_max unit="NS"></operatingTemperature_metric_max>
<operatingTemperature_english_min unit="NS"></operatingTemperature_english_min>
<operatingTemperature_english_max unit="NS"></operatingTemperature_english_max>
<storageTemperature_metric_min unit="NS"></storageTemperature_metric_min>
<storageTemperature_metric_max unit="NS"></storageTemperature_metric_max>
<storageTemperature_english_min unit="NS"></storageTemperature_english_min>
<storageTemperature_english_max unit="NS"></storageTemperature_english_max>
<humidity_min unit="NS">0</humidity_min>
<humidity_max unit="NS">0</humidity_max>
<humidity_max unit="NS">1</humidity_max>
<altitude_metric_min unit="NS"></altitude_metric_min>
<altitude_metric_max unit="NS"></altitude_metric_max>
<altitude_english_min unit="NS"></altitude_english_min>
<altitude_english_max unit="NS"></altitude_english_max>
<alarmCapable>Y</alarmCapable>
<PCNChange></PCNChange>
<HazardousMaterialIndicator>6</HazardousMaterialIndicator>
<orderingCode>81.SOC12IR1131S</orderingCode>
<frameSpacing_metric unit="NA"></frameSpacing_metric>
<frameSpacing_english unit="NA"></frameSpacing_english>
</EnhancedAttribute>
</IesEnhancedAttributes>
【问题讨论】:
-
您当然可以通过 XSLT 识别重复元素,但如果您的输入 XML 很大,那么手动删除重复元素可能不是一个可行的选择。幸运的是,XSLT 也可以提供帮助,但是 (1) 我不清楚您究竟想如何处理此类重复,并且 (2) 我们不是代码编写服务。
-
感谢 XSLT 选项,我将进一步探索... 1. 对于 Duplicate,我只需要其中的 1 个。 2.对不起,我的意思是要代码..