如何将本地磁盘位置URL链接到XML中的标记?

时间:2014-11-14 11:48:25

标签: python-2.7 lxml lxml.html

我对使用Python的XML和XML很陌生。我正在使用LXML模块。我的目标是做一些事情:

<include>
  <!--This is the result-->        #This is for naming the result of the file .
  <check run = "1000">
    <params>
      <param name="Name" path="$${path_to_the_file_in_local_disk}"/>
    </params>
    <True>
      <variable name="File1" path=""/>
      <variable name="File2" path="c:\xyz"/>
      <variable name="File3" path="c:\xyz"/>
      <variable name="File4" path="c:\xyz"/>
      <variable name="File5" path="c:\xyz"/>
      <variable name="File6" path="c:\xyz"/>
      <variable name="File7" path="c:\xyz"/>
      <variable name="File8" path="c:\xyz"/>
    </variables>
  </user>
</include>

这我想动态生成。说,我有10个文件,根据某些搜索条件,我需要对文件进行分类。可以说,分类是真的和假的。 所以,在True部分下,我有4个文件。我想在XML中创建一个条目,它们各自的文件位置在本地磁盘上。当我在浏览器中打开XML文件时,XML文件中的链接可以为我打开目录。

所以我的问题是: 1.每次满足条件时如何创建XML标记? 2.如何将其链接到本地​​磁盘位置?

到目前为止,我已完成控制台打印结果。

        f = open('./script.log', 'r')
        for lines in f.readlines():
            passed      = lines.find("=== Result: PASS ===")
            failed      = lines.find("=== Result: FAIL ===")
            if passed != -1: 
                print "True File"
                passed_cnt = passed_cnt + 1
                passed_list.append(os.getcwd())
                lookup = '* COMMAND:'
                with open('./script.log') as myFile:
                    for num, line in enumerate(myFile, 1):
                        if lookup in line:
                            #print 'found at line:', num
                            tc_id = (line.split('\\')[-1]).split(' ')[-3]
                            print "TRUE FILE Name : ", tc_id
                            variable = etree.SubElement(variables, "variable")
                            variable.set('name', 'path')
                            variable.set('value', '1000')

2 个答案:

答案 0 :(得分:0)

回答标题中的问题:

with open("outfile.xml", "wb") as outfile:
    outfile.write(etree.tostring(xmlroot, xml_declaration=True))

回答帖子中的问题:

您使用file:网址链接到本地​​文件。我不确定它们应该如何在Windows上看到,但我认为它是这样的:

file://c\:\\<path to the file>

寻找示例和实验。

答案 1 :(得分:0)

    I found a way to deal with the problem here. My issues were:
    1. Generating a XML file.
    2. This file was to be be compiled dynamically for each and every run.

    I did something like:


from __future__ import division
import os
import fnmatch
import xml.etree.cElementTree as ET
import time
import csv
from xml.etree.ElementTree import Element, SubElement, Comment, tostring
import datetime
from lxml import etree
import smtplib

    root = etree.Element("include")
    comment1 = etree.Comment("================<Your Text>================")
    root.append(comment1)
    user1 = etree.SubElement(root, "Complete_Results")
    param = etree.SubElement(user1, "Total")
    param.set('Success_Percentage', str('%.2f'%((passed_cnt/total_Count)*100)))
    param = etree.SubElement(user1, "Total")
    param.set('Failure_Percentage', str('%.2f'%((failed_cnt/total_Count)*100)))
    param = etree.SubElement(user1, "Aggregate_Result")
    if pass_percentage == 100:
        res = "_________________Successfully_Passed________________"
    else:
        res = "________________Iteration_Failed________________"
    param.set('Finally', res)
    user1 = etree.SubElement(root, "Success_Results")
    comment2 = etree.Comment("======================= Passed test cases section ==========================")
    user1.append(comment2)
    user1.set('Number_of_Test_cases_passed', str(passed_cnt))
    params = etree.SubElement(user1, "Results")
    param = etree.SubElement(params, "Success_Results")
    for i in passed_TC_list:
        for location in passed_list:
            param = etree.SubElement(params, 'TC_Details')
            param.set('File_name', str(i))
            param = etree.SubElement(params, 'ID' )
            param.set('Path_in_Local_Directory',str(location))
            path = str(str(location) + str("\\") + str(i))
            param.set('Link_to_file', str(path))
            passed_list.remove(location)