Rを使用して特定のXMLノードから情報を抽出したいと思っています:http://www.uniprot.org/uniprot/P38949.xml。それは、次のブロックに関する:私は次のコードを使用して機能タイプ=「配列変異体」ノードを展開しようとしxml parse uniprot features
<feature type="initiator methionine" description="Removed" evidence="1">
<location>
<position position="1"/>
</location>
</feature>
<feature type="chain" description="Major pollen allergen Car b 1 isoforms 1A and 1B" id="PRO_0000154185">
<location>
<begin position="2"/>
<end position="160"/>
</location>
</feature>
<feature type="sequence variant" description="In isoform 1B.">
<original>V</original>
<variation>A</variation>
<location>
<position position="38"/>
</location>
</feature>
<feature type="sequence variant" description="In isoform 1B.">
<original>I</original>
<variation>S</variation>
<location>
<position position="63"/>
</location>
</feature>
<feature type="sequence variant" description="In isoform 1B.">
<original>K</original>
<variation>E</variation>
<location>
<position position="133"/>
</location>
</feature>
:
TabName = "P38949"
http = paste0("http://www.uniprot.org/uniprot/",TabName,".xml")
data = xmlParse(http)
nd = getNodeSet(data, "//ns:entry", namespaces=c(ns=getDefaultNamespace(data)[[1]]$uri))
original = sapply(nd, xpathSApply, './/*[local-name()="original"]', xmlValue)
variation = sapply(nd, xpathSApply, './/*[local-name()="variation"]', xmlValue)
description = sapply(nd, xpathSApply, './/*[local-name()="feature" and @type="sequence variant"]', xmlGetAttr, 'description')
position = sapply(nd, xpathSApply, './/*[local-name()="position"]', xmlGetAttr, 'position')
table = rbind(table, data.frame(description,original,variation,position))
私が正しく属性の位置を抽出することができないのですが、このスクリプトは、フィーチャタイプ= "イニシエータメチオニン"の位置属性も抽出しているので、これは必要ではありません。出力テーブルには、次のようになります。
description original variation position
In isoform 1B. V A 38
In isoform 1B. I S 63
In isoform 1B. K E 133