[英]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.