2017-02-17 128 views
0

我有一個問題,當從XML到R.提取屬性我在XML文件如下:XML至R屬性

- <export> 
    + <ExportRef> 
    - <BookNodes> 
     - <Book label="romance"> 
     + <Showing> 
     - <Data> 
      + <Char1 label="Char1"> 
      - <Char2 label="Char2"> 
        + <SubChar21> 
        - <SubChar22> 
         <Range unit="nm">4</Range> 
         <Range unit="nm">8</Range> 
        </SubChar22> 
      - <Char3 label="Char3"> 
        + <SubChar31> 
        - <SubChar32> 
         <Range Id="1">voc</Range> 
         <Range Id="2">buc</Range> 
        </SubChar32> 
      </Data> 
     </Book> 
     - <Book label="horror"> 
     + <Showing> 
     - <Data> 
      + <Char1 label="Char1"> 
      - <Char2 label="Char2"> 
        + <SubChar21> 
        - <SubChar22> 
         <Range unit="nm">4</Range> 
         <Range unit="nm">8</Range> 
        </SubChar22> 
      - <Char3 label="Char3"> 
        + <SubChar31> 
        - <SubChar32> 
         <Range Id="1">voc</Range> 
         <Range Id="2">buc</Range> 
        </SubChar32> 
      </Data> 
     </Book> 
    </BookNodes> 
</export> 

我想有範圍Id的列表只爲每本書類別。例如:

浪漫:

id id 
1 2 

恐怖:

id id 
1 2 

當我做這樣的事情:

RangeID_1<-xpathSApply(AC_Node[[1]][[2]], ".//Range", xmlAttrs) 

我得到:

unit unit id id 
"nm" "nm" "1" "2" 

如何對R說我只想要範圍ID而不是範圍單位?

非常感謝!

+2

不是一個XML文件。這是來自允許節點擴展的XML查看器的XML文件的文本副本。沒有一個人在正確的思維中會編輯該塊,以使其成爲合法的XML。 – hrbrmstr

+0

也請提供最小但完全可重複的代碼,其中包括輸入文件的所有庫語句和代碼。 –

回答

0

我的兩個美分,rvest:

library(rvest) 
read_xml("your_xml_file.xml") %>% 
    xml_nodes("Range") %>% 
    xml_attr("Id")