簡體   English   中英

Perl XML :: DOM結束標記

[英]Perl XML::DOM closing tags

我正在解析並添加到XML文檔,該文檔使用Perl的XML::DOM模塊具有以下結構。

<spectrum_query spectrum="7633.7633.2">
      <search_result>
        <search_hit hit_rank="1" peptide="MLATLAPEQR" >
          <alternative_protein protein="NP_7630153.2" />
          <modification_info>
            <mod_aminoacid_mass position="1" mass="147.0353996062"/>
            <mod_aminoacid_mass position="9" mass="129.0425935114"/>
          </modification_info>
          <search_score name="PSM score" value="6.99"/>
          <search_score name="PSM confidence" value="76.47"/>
          <search_score name="SpecEValue" value="3.6509737E-6"/>
          <search_score name="MVH" value="4.772447368593232E-21"/>
          <search_score name="theoretical mass" value="1145.5750592567304"/>
        </search_hit>
      </search_result>
    </spectrum_query>

我使用setAttribute()和appendChild()函數,在“ search_hit”標簽內以及最后一個“ search_score”標簽后插入以下XML標簽,如下所示。

......
<search_score name="theoretical mass" value="1145.5750592567304"/>
<analysis_result analysis="peptideprophet">
<peptideprophet_result probability="0.7647" all_ntt_prob="(0,0,0)"/>
</analysis_result>
</search_hit>

我希望使用$ doc-> printToFile(“ Dom.out.xml”)在最終輸出文件中編寫如下所示的封閉標簽。 但是,在輸出文件中未寫入結束標記。 反正有寫結束標簽嗎? 謝謝

<search_score name="PSM score" value="6.99"></search_score>
<peptideprophet_result probability="0.7647" all_ntt_prob="(0,0,0)"></peptideprophet_result>

更新資料

XML::DOM文檔有這樣的說法

默認情況下, XML::DOM壓縮所有空的Element標記(樣式0。)您可以通過調用XML::DOM::setTagCompression並引用帶有2個參數的函數,來控制特定元素使用哪種樣式。 第一個是元素的標記名,第二個是正在打印的XML::DOM::Element 該函數應返回0、1或2,以指示應使用哪種樣式來打印空標簽。

看起來格式1是您想要的格式,並且由於您需要以相同的方式處理所有空元素,因此將其添加到程序頂部應該進行必要的更改

XML::DOM::setTagCompression ( sub { 1 } );



在XML中, 元素如

<tag></tag>

也可以寫成

<tag/>

因為它更清晰,更簡潔,所以XML::DOM在這種情況下就是這樣做的。 您的XML數據很好

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM