我試圖得到XML的一個很好的代表......爲了簡單起見,假設我們有以下的XML使用XPath
<div>
<em>5</em>
<em></em>
<em></em>
<em>A</em>
</div>
理想我想檢索空非空節點將它轉換爲有一個列一些表:
| em |
------
| "5"|
| "" |
| "" |
| "A"|
(我這裏使用的引號清楚地表明,我想空節點以及)
我試了幾個XPath查詢..一個最簡單的是我測試與R,在這裏我會得到
z = read_xml("<div>
<em>5</em>
<em></em>
<em></em>
<em>A</em>
</div>")
z
xml_find_all(z,"//*[name() = 'em']/text()")
{xml_nodeset (2)}
[1] 5
[2] A
其他大多數問題是關於只能探測空/非空單元格..或選擇的第一個非空的..但我不知道怎樣才能使用這裏。
我有一個想法是試圖使用concat ...向所有節點添加一些字符串(包括空的字符串)。但是,這是Xpath 2.0解決方案(AFAIK),這不會是一個可行的解決方案。
最終解決方案(從XML中提取信息)將在Hive中實現。我使用一些Serde功能來獲取信息..然後將其存儲爲數組..然後我想將其轉換爲普通表...但是這是不可能的,如果由於長度差異而未檢索到缺失值
這是否解決方案'// EM /串()'適用? – Andersson
@Andersson太糟糕了,它不工作..試圖用R和Hive ..在那裏我只是用string()替換文本()。 我期望會有一個名爲content()或類似的東西......但我還沒有找到它。 我現在看到的唯一的解決方案,就是採取整個節點..後來使用一些正則表達式來減少不必要的部分。 – zwep