Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/282.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/300.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 正在尝试将.log转换为.xml_Php_Python_Xml_Excel_Powershell - Fatal编程技术网

Php 正在尝试将.log转换为.xml

Php 正在尝试将.log转换为.xml,php,python,xml,excel,powershell,Php,Python,Xml,Excel,Powershell,我一直在寻找各种方法将六个20 MB的.log文件转换为.xml 人们把我推荐给在线转换器,它不会转换 其他人说使用EXCEL的开发者工具,但是 数据格式不正确 将20 MB的数据复制并粘贴到EXCEL上需要永远 我想有两个选择: 在powershell中,将每一行存储为一个数组,然后为reach line array创建另一个数组,但正如您将看到的,这些行的格式不一致 研究如何使用php或python转换为xml 这是数据的格式 06/01 01:25:58 [2024:2588] 1

我一直在寻找各种方法将六个20 MB的.log文件转换为.xml

人们把我推荐给在线转换器,它不会转换

其他人说使用EXCEL的开发者工具,但是

  • 数据格式不正确

  • 将20 MB的数据复制并粘贴到EXCEL上需要永远

  • 我想有两个选择:

  • 在powershell中,将每一行存储为一个数组,然后为reach line array创建另一个数组,但正如您将看到的,这些行的格式不一致

  • 研究如何使用php或python转换为xml

  • 这是数据的格式

    06/01 01:25:58 [2024:2588] 10.4.10.10<AgentInfo DomainID="8CB49C910AFB16720044B53CD014E7D9" AgentType="105" UserDomain="MYAWESOMEDOMAIN.ORG" LoginUser="admIN" ComputerDomain="myAWESOMEDOMAIN.org" ComputerName="AWESOMES001" PreferredGroup="My%20Company%5cServers%5cGUP" PreferredMode="1" KnownClientID="C35A5B1E0AFB16760019AE74888EA38A" HardwareKey="46E04E5469DC41949F33E73FDC0C5FCF" IsNPVDIClient="0" SiteDomainName=""/>
    
    06/01 01:26:07 [2024:3280] 10.24.10.97<AgentInfo DomainID="8CB49C910AFB16720044B53CD014E7D9" AgentType="105" UserDomain="LocalComputer" LoginUser="Student%208" ComputerDomain="WORKGROUP" ComputerName="DC9Spartan" PreferredGroup="My%20Company%5cDefault%20Group" PreferredMode="1" HardwareKey="208B60B45CE2D02192B2FBB30CA1470A" SiteDomainName=""/>
    
    06/01 01:26:07 [2024:3280] 10.24.10.97<AgentInfo DomainID="8CB49C910AFB16720044B53CD014E7D9" AgentType="105" UserDomain="LocalComputer" LoginUser="Student%208" ComputerDomain="WORKGROUP" ComputerName="DC9Spartan" PreferredGroup="My%20Company%5cDefault%20Group" PreferredMode="1" HardwareKey="208B60B45CE2D02192B2FBB30CA1470A" SiteDomainName=""/> AgentID=2C26221A0AFB167201AE7F6B29E365AD AgentType=105 ComputerID=1E6BFEF50AFB167201AE7F6BBA576A0C Hash Key=69C6250108E5B7FBB6ACF8294B6564FE
    
    06/01 01:26:19 [2024:2748] 10.21.36.6<AgentInfo DomainID="8CB49C910AFB16720044B53CD014E7D9" AgentType="105" UserDomain="LocalComputer" LoginUser="student" ComputerDomain="WORKGROUP" ComputerName="DingDing9461JZ6" PreferredGroup="My%20Company%5cDefault%20Group" PreferredMode="1" HardwareKey="C6D4F00C9C2952182D8DAB03045C6E30" SiteDomainName=""/>
    
    06/01 01:26:19 [2024:2748] 10.21.36.6<AgentInfo DomainID="8CB49C910AFB16720044B53CD014E7D9" AgentType="105" UserDomain="LocalComputer" LoginUser="student" ComputerDomain="WORKGROUP" ComputerName="DingDing9461JZ6" PreferredGroup="My%20Company%5cDefault%20Group" PreferredMode="1" HardwareKey="C6D4F00C9C2952182D8DAB03045C6E30" SiteDomainName=""/> AgentID=BBF24AB00AFB167200D94A8E46E57D3C AgentType=105 ComputerID=1B4EF5B30AFB167200D94A8E8EBB8E65 Hash Key=6BAC96603C7495DE08E5F305EEF310EE
    
    06/01 01:26:33 [2024:3376] 5 Server returned: 500 Internal Server Error
    
    06/01 01:26:33 [2024:3376] 10.16.64.16<AgentInfo DomainID="ACD6E7230AFB160401B335F917AFF5BE" AgentType="105" UserDomain="LocalComputer" LoginUser="admin" ComputerDomain="myAWESOMEDOMAIN.org" ComputerName="LLR0MGVY" PreferredGroup="My%20Company%5cDefault%20Group" PreferredMode="1" HardwareKey="EFDBD800D66488B08936A51F19B5496A" IsNPVDIClient="0" SiteDomainName=""/>--FAILED
    

    我肯定会使用Python

    大概是这样的:

    import sys
    
    
    inFile = sys.argv[1]
    inFile = open(inFile,'r')
    parser = inFile.readlines()
    outFile = open('[your_path]\\converted.xml', 'w')      
    
    for i in parser:
       slice = i.split(' ') #split each line at spaces and do stuff with each slice
       outFile.write("<date>" + slice[0] + "</date>" + '\n')
       outFile.write("<time>" + slice[1] + "</time>" + '\n')
    and so on...
    
    导入系统 infle=sys.argv[1] infle=open(infle,'r') parser=infle.readlines() outFile=open(“[您的路径]\\converted.xml”,“w”) 对于解析器中的i: slice=i.split(“”)#在空格处分割每一行,并对每一个片段进行填充 outFile.write(“+片[0]+”+“+”\n”) outFile.write(“+片[1]+”+“+”\n”) 等等
    我肯定会使用Python

    大概是这样的:

    import sys
    
    
    inFile = sys.argv[1]
    inFile = open(inFile,'r')
    parser = inFile.readlines()
    outFile = open('[your_path]\\converted.xml', 'w')      
    
    for i in parser:
       slice = i.split(' ') #split each line at spaces and do stuff with each slice
       outFile.write("<date>" + slice[0] + "</date>" + '\n')
       outFile.write("<time>" + slice[1] + "</time>" + '\n')
    and so on...
    
    导入系统 infle=sys.argv[1] infle=open(infle,'r') parser=infle.readlines() outFile=open(“[您的路径]\\converted.xml”,“w”) 对于解析器中的i: slice=i.split(“”)#在空格处分割每一行,并对每一个片段进行填充 outFile.write(“+片[0]+”+“+”\n”) outFile.write(“+片[1]+”+“+”\n”) 等等
    我肯定会使用Python

    大概是这样的:

    import sys
    
    
    inFile = sys.argv[1]
    inFile = open(inFile,'r')
    parser = inFile.readlines()
    outFile = open('[your_path]\\converted.xml', 'w')      
    
    for i in parser:
       slice = i.split(' ') #split each line at spaces and do stuff with each slice
       outFile.write("<date>" + slice[0] + "</date>" + '\n')
       outFile.write("<time>" + slice[1] + "</time>" + '\n')
    and so on...
    
    导入系统 infle=sys.argv[1] infle=open(infle,'r') parser=infle.readlines() outFile=open(“[您的路径]\\converted.xml”,“w”) 对于解析器中的i: slice=i.split(“”)#在空格处分割每一行,并对每一个片段进行填充 outFile.write(“+片[0]+”+“+”\n”) outFile.write(“+片[1]+”+“+”\n”) 等等
    我肯定会使用Python

    大概是这样的:

    import sys
    
    
    inFile = sys.argv[1]
    inFile = open(inFile,'r')
    parser = inFile.readlines()
    outFile = open('[your_path]\\converted.xml', 'w')      
    
    for i in parser:
       slice = i.split(' ') #split each line at spaces and do stuff with each slice
       outFile.write("<date>" + slice[0] + "</date>" + '\n')
       outFile.write("<time>" + slice[1] + "</time>" + '\n')
    and so on...
    
    导入系统 infle=sys.argv[1] infle=open(infle,'r') parser=infle.readlines() outFile=open(“[您的路径]\\converted.xml”,“w”) 对于解析器中的i: slice=i.split(“”)#在空格处分割每一行,并对每一个片段进行填充 outFile.write(“+片[0]+”+“+”\n”) outFile.write(“+片[1]+”+“+”\n”) 等等
    XMLWriter Api是为此类工作设计的XML Api。下面是一个让您开始学习的示例:

    $xml = new XMLWriter();
    $xml->openUri($output);
    $xml->startDocument();
    $xml->setIndent(2);
    $xml->startElement('log');
    
    $file = fopen($input, 'r');
    while (FALSE !== ($line = fgets($file))) {
      if (FALSE !== ($p = strpos($line, '<'))) {
        $xml->startElement('line');
        $xml->writeElement('date', substr($line, 0, $p - 1));
        $xml->writeRaw(substr($line, $p));
        $xml->endElement();
      }
    }
    $xml->endElement();
    $xml->endDocument();
    $xml->flush();
    
    $xml=newXMLWriter();
    $xml->openUri($output);
    $xml->startDocument();
    $xml->setIndent(2);
    $xml->startElement('log');
    $file=fopen($input,'r');
    while(FALSE!==($line=fgets($file))){
    
    如果(FALSE!==($p=strpos($line),XMLWriter Api是为此类工作设计的XML Api。下面是一个示例:

    $xml = new XMLWriter();
    $xml->openUri($output);
    $xml->startDocument();
    $xml->setIndent(2);
    $xml->startElement('log');
    
    $file = fopen($input, 'r');
    while (FALSE !== ($line = fgets($file))) {
      if (FALSE !== ($p = strpos($line, '<'))) {
        $xml->startElement('line');
        $xml->writeElement('date', substr($line, 0, $p - 1));
        $xml->writeRaw(substr($line, $p));
        $xml->endElement();
      }
    }
    $xml->endElement();
    $xml->endDocument();
    $xml->flush();
    
    $xml=newXMLWriter();
    $xml->openUri($output);
    $xml->startDocument();
    $xml->setIndent(2);
    $xml->startElement('log');
    $file=fopen($input,'r');
    while(FALSE!==($line=fgets($file))){
    
    如果(FALSE!==($p=strpos($line),XMLWriter Api是为此类工作设计的XML Api。下面是一个示例:

    $xml = new XMLWriter();
    $xml->openUri($output);
    $xml->startDocument();
    $xml->setIndent(2);
    $xml->startElement('log');
    
    $file = fopen($input, 'r');
    while (FALSE !== ($line = fgets($file))) {
      if (FALSE !== ($p = strpos($line, '<'))) {
        $xml->startElement('line');
        $xml->writeElement('date', substr($line, 0, $p - 1));
        $xml->writeRaw(substr($line, $p));
        $xml->endElement();
      }
    }
    $xml->endElement();
    $xml->endDocument();
    $xml->flush();
    
    $xml=newXMLWriter();
    $xml->openUri($output);
    $xml->startDocument();
    $xml->setIndent(2);
    $xml->startElement('log');
    $file=fopen($input,'r');
    while(FALSE!==($line=fgets($file))){
    
    如果(FALSE!==($p=strpos($line),XMLWriter Api是为此类工作设计的XML Api。下面是一个示例:

    $xml = new XMLWriter();
    $xml->openUri($output);
    $xml->startDocument();
    $xml->setIndent(2);
    $xml->startElement('log');
    
    $file = fopen($input, 'r');
    while (FALSE !== ($line = fgets($file))) {
      if (FALSE !== ($p = strpos($line, '<'))) {
        $xml->startElement('line');
        $xml->writeElement('date', substr($line, 0, $p - 1));
        $xml->writeRaw(substr($line, $p));
        $xml->endElement();
      }
    }
    $xml->endElement();
    $xml->endDocument();
    $xml->flush();
    
    $xml=newXMLWriter();
    $xml->openUri($output);
    $xml->startDocument();
    $xml->setIndent(2);
    $xml->startElement('log');
    $file=fopen($input,'r');
    while(FALSE!==($line=fgets($file))){
    
    如果(FALSE!==($p=strpos($line,我将提供一个使用正则表达式的PowerShell解决方案,
    ConvertFrom StringData
    )(可能可以使用XML键入来转换AgentInfo,但这对于我的解决方案来说更简单),以及一个对象哈希表,用于将记录收集到对象中,然后我将其转换为XML,并将其清除,因为PowerShell的
    ConvertTo-XML
    cmdlet过于冗长

    $InputData=获取内容'C:\Path\To\File.log'
    $Records=@{}
    $InputData{124;?{${-match“^(?\d{2}\/\d{2}\d{2}:\d{2})(?\[.+?\])(?\S+”-或${-match“^(?\d{2}/\d{2}\d{2}:\d{2}:\d{2})(?\[.+]|
    %{$Record=[pscustomobject]@{
    [string]'Date'=$Matches['Date']
    [string]'ID'=$Matches['ID']
    [string]'IP'=$Matches['IP']
    [string]'Msg'=$Matches['Msg']
    “AgentInfo”=新对象PSObject-Prop($Matches['AgentInfo']-replace'(?)”、“$1$2$1'-replace”属性名=“(.+?)”(?=/>”)、“$1'-replace”“,”-replace”“,”}设置内容C:\Path\To\OutFile.xml
    
    这将产生:

    
    06/01 01:26:19  
    [2024:2748]  
    10.21.36.6  
    “学生”
    “工作组”
    “丁丁9461JZ6”
    “8CB49C910AFB16720044B53CD014E7D9”
    “C6D4F00C9C2952182D8DAB0345C6E30”
    ""  
    “我的%20公司%5默认%20集团”
    "105"  
    "1"  
    “本地计算机”
    06/01 01:25:58  
    [2024:2588]  
    10.4.10.10  
    “管理员”
    "0"  
    “myAWESOMEDOMAIN.org”
    “令人敬畏的001”
    “8CB49C910AFB16720044B53CD014E7D9”
    “46E04E5469DC41949F33E73FDC0C5FCF”
    ""  
    “我的%20公司%5服务器%5cGUP”
    "105"  
    “C35A5B1E0AFB16760019AE74888EA38A”
    "1"  
    “MYAWESOMEDOMAIN.ORG”
    06/01 01:26:07  
    [2024:3280]  
    10.24.10.97  
    “学生%208”
    “工作组”
    “DC9Spartan”
    “8CB49C910AFB16720044B53CD014E7D9”
    “208B60B45CE2D02192B2FB30CA1470A”
    ""  
    “我的%20公司%5默认%20集团”
    "105"  
    "1"  
    “本地计算机”
    06/01 01:26:33  
    [2024:3376]  
    10.16.64.16  
    5服务器返回:500内部服务器错误
    “管理员”
    "0"  
    “myAWESOMEDOMAIN.org”
    “LLR0MGVY”
    “ACD6E7230AFB160401B335F917AFF5BE”
    “EFDBD800D6648B08936A51F1