Exploratory コミュニティ

XMLのデータのインポートでエラーが出る

#1

質問

下記のXMLのデータをこちらのノートを参考にインポートを試してみましたが、エラーになります。

データ:http://www.orphadata.org/data/xml/en_product6.xml

エラー:Error : 1: StartTag: invalid element name

回答

こちらXMLが階層構造になっているために、そのままでは読み込めません。読み込みたいノードの名前を以下のように指定すると読み込めます。以下の例はDisorderというノードを行として取得しています。
ただし、

doc <- xmlParse("http://www.orphadata.org/data/xml/en_product6.xml")
doc2 <-xmlToDataFrame(nodes=getNodeSet(doc,"//Disorder"))

#2

xmlParse、xmlToDataFrame、getNodeSetのいずれもXMLパッケージに
含まれるようですので、

library(XML)
doc <- xmlParse("http://www.orphadata.org/data/xml/en_product6.xml")
doc2 <-xmlToDataFrame(nodes=getNodeSet(doc,"//Disorder"))

としておくのが良さそうです!

ところで、取り込んだ結果でDisorderGeneAssociationListの列は、
実際のデータの

<DisorderGeneAssociationList count="1">
    <DisorderGeneAssociation>
        <SourceOfValidation>22587682[PMID]</SourceOfValidation>
        <Gene id="20160">
            <Name lang="en">kinesin family member 7</Name>
            <Symbol>KIF7</Symbol>
            <SynonymList count="1">
                <Synonym lang="en">JBTS12</Synonym>
            </SynonymList>
            <GeneType id="25993">
                <Name lang="en">gene with protein product</Name>
            </GeneType>
            <ExternalReferenceList count="6">
                <ExternalReference id="57240">
                    <Source>Ensembl</Source>
                    <Reference>ENSG00000166813</Reference>
                </ExternalReference>
                <ExternalReference id="51758">
                    <Source>Genatlas</Source>
                    <Reference>KIF7</Reference>
                </ExternalReference>
                <ExternalReference id="51756">
                    <Source>HGNC</Source>
                    <Reference>30497</Reference>
                </ExternalReference>

などにネストされているタグがすべて1つのカラムに入ってしまっていますが、
これをタグごとに分割する方法などないでしょうか?