Php 正在尝试将.log转换为.xml
我一直在寻找各种方法将六个20 MB的.log文件转换为.xml 人们把我推荐给在线转换器,它不会转换 其他人说使用EXCEL的开发者工具,但是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
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