如何在XML文件中存储点列表

时间:2018-05-03 08:23:02

标签: xml

您好:)我从xml开始,我正在编写一个简单的xml文件。 我的问题很简单:有没有办法将double列表存储到这个xml文件中? 我无法真正想到一种有效的方式:/

感谢您的回答或指导:)

以下是我的代码示例:

`<state>
    <name>Name state 2</name>
    <x>x</x>
    <y>y</y>
    <width>w</width>
    <height>h</height>
    <nlinks>2</nlinks>
    <effect>1</effect>
    <signal>
        <name>Signal 1</name>
        <amplitude>3</amplitude> <!--parameter 3 -->
        <duration>10</duration>  <!--input 0 -->
        <listOfPoints>...</listOfPoints>
    </signal>
</state>`

3 个答案:

答案 0 :(得分:1)

XML像树一样工作,
因此,如果您想在其中一个节点中找到一个列表,只需展开:

library(biomaRt)

# data
d <- read.table(text = "1     2665697     4665777      MIR201
1    10391435    12391516      MIR500
1    15106831    17106911      MIR122
1    23436535    25436616      MIR234 
1    23436575    25436656      MIR488")

# specify the database
ensembl = useMart("ensembl", dataset = "hsapiens_gene_ensembl")

# loop through rows, get genes, then paste with collapse,
# and finally bind back with data d.
res <- cbind(
  d,
  genes = apply(d, 1, function(i){
    x <- getBM(attributes=c("external_gene_name"), 
               filters = c("chromosome_name" , "start", "end"), 
               values = list(i[1], i[2], i[3]), 
               mart = ensembl)
    # keeping only 3 genes, as output is too long.
    # In your case remove below line
    x <- head(x, 3)

    # return genes, comma separated
    paste(x$external_gene_name, collapse = ",")
  })
)

res
#   V1       V2       V3     V4                       genes
# 1  1  2665697  4665777 MIR201 TTC34,AC242022.1,AL592464.2
# 2  1 10391435 12391516 MIR500   AL139424.2,PGD,AL139424.1
# 3  1 15106831 17106911 MIR122      KAZN,TMEM51-AS1,TMEM51
# 4  1 23436535 25436616 MIR234       ASAP3,E2F2,AL021154.1
# 5  1 23436575 25436656 MIR488       ASAP3,E2F2,AL021154.1

请参阅W3School Xml Tree
有关编写XML的更多信息,请参阅Sitepoint tutorial

答案 1 :(得分:0)

这会有所帮助: -

<marker>
<pose x="0" y="-1.3" theta="1.57" />
<geometry>
    <point x="0" y="0" />
    <point x="0" y="0.3" />
    <point x="0.3" y="0.3" />
    <point x="0.3" y="0" />
</geometry>
</marker>

答案 2 :(得分:0)

在没有架构的情况下,XML只有字符串:它由应用程序决定字符串是否代表双精度。

如果使用模式定义类型,则有两种可能的表示形式:您可以使用以空格分隔的列表(在属性值或文本内容中):

<points>1.2 1.5 1.6 -3.7</points>

或者你可以使用一系列子元素:

<points>
  <point>1.2</point>
  <point>1.5</point>
  <point>1.6</point>
  <point>1.7</point>
</points>

为了告知您哪个代表是&#34;更好&#34;,我们需要了解您的项目要求;但这两种形式都可以在流行且经过深思熟虑的XML词汇表中找到。