TECHNOLOGIES
FORUMS
JOBS
BOOKS
EVENTS
INTERVIEWS
Live
MORE
LEARN
Training
CAREER
MEMBERS
VIDEOS
NEWS
BLOGS
Sign Up
Login
No unread comment.
View All Comments
No unread message.
View All Messages
No unread notification.
View All Notifications
Answers
Post
An Article
A Blog
A News
A Video
An EBook
An Interview Question
Ask Question
Forums
Monthly Leaders
Forum guidelines
Riaan de Lange
NA
11
0
Parse HP's XML Printer Accounting File
Dec 26 2008 9:03 AM
Hi everyone
While its not so busy at work during the festive period, i've decided to build a application to parse our HP plotters xml accounting file. The file is sent to my mail on a daily basis, with all the statistics of the previous day's print in. I've looked at basic XML Parsers all over the net, and all works, but the format of this HP file is a tad diffrent than your "normal" xml file, so I'm having difficulties parsing it.
Please assist.
My code and my method so far:
xml file:
<?xml version="1.0" encoding="UTF-8"?>
<AccountingInfo version="1.2">
<Current_Printer_Configuration>
<Product_Number>Q1276A</Product_Number>
<Serial_Number>DK725JW</Serial_Number>
<Product_Name>HP Designjet 4500mfp</Product_Name>
<FW_Version>GW_10.1.1.4</FW_Version>
</Current_Printer_Configuration>
<ACCOUNTING_INFO>
<JOB_NAME value="D4VC#30LEV"/>
<UUID value="70bbd6b8-e5a3-4cad-86ce-a9b5f39cc176"/>
<ACCOUNT_ID value=""/>
<USER_DEFINED value=""/>
<TIMESTAMP value="20081218091804"/>
<PRINTING_TIMESTAMP value="20081218172736"/>
<JOB_STATUS value="0"/>
<USER_NAME value="SnydJ"/>
<SOURCE value="1"/>
<INK_COVERAGE_CATEGORY value="B"/>
<PRINT_QUALITY value="1"/>
<PRINT_TYPE value="1"/>
<PAGES value="1"/>
<COPIES value="2"/>
<PRINTING_TIME units="secondsx10" value="2475"/>
<MEDIA_INFO>
<NAME vendor-name="HP" media-name="Plain"/>
<QUANTITY units="sqi" value="5104"/>
<SIZE units="inchesx3600">
<WIDTH value="127585"/>
<LENGTH value="255125"/>
</SIZE>
<SOURCE value="3"/>
</MEDIA_INFO>
<INK_INFO>
<INK_USED units="microliters" value="Unknown"/>
<CONSUME color="Y" quantity="301"/>
<CONSUME color="M" quantity="281"/>
<CONSUME color="B" quantity="1122"/>
<CONSUME color="C" quantity="208"/>
</INK_INFO>
</ACCOUNTING_INFO>
c# method:
private void ParseXML(string filename)
{
XmlDocument xDoc = new XmlDocument();
xDoc.Load(filename);
XmlNodeList jobname = xDoc.GetElementsByTagName("JOB_NAME");
XmlNodeList uniqueid = xDoc.GetElementsByTagName("UUID");
XmlNodeList accountid = xDoc.GetElementsByTagName("ACCOUNT_ID");
XmlNodeList userdefined = xDoc.GetElementsByTagName("USER_DEFINED");
XmlNodeList timestamp = xDoc.GetElementsByTagName("TIMESTAMP");
XmlNodeList printingtimestamp = xDoc.GetElementsByTagName("PRINTING_TIMESTAMP");
XmlNodeList jobstatus = xDoc.GetElementsByTagName("JOB_STATUS");
XmlNodeList username = xDoc.GetElementsByTagName("USER_NAME");
//XmlNodeList accountingsource = xDoc.GetElementsByTagName("SOURCE");
XmlNodeList inkcoveragecategory = xDoc.GetElementsByTagName("INK_COVERAGE_CATEGORY");
XmlNodeList printquality = xDoc.GetElementsByTagName("PRINT_QUALITY");
XmlNodeList printtype = xDoc.GetElementsByTagName("PRINT_TYPE");
XmlNodeList pages = xDoc.GetElementsByTagName("PAGES");
XmlNodeList copies = xDoc.GetElementsByTagName("COPIES");
XmlNodeList printingtime = xDoc.GetElementsByTagName("PRINTING_TIME");
XmlNodeList name = xDoc.GetElementsByTagName("NAME");
XmlNodeList quantity = xDoc.GetElementsByTagName("QUANTITY");
XmlNodeList size = xDoc.GetElementsByTagName("SIZE");
XmlNodeList width = xDoc.GetElementsByTagName("WIDTH");
XmlNodeList length = xDoc.GetElementsByTagName("LENGTH");
//XmlNodeList mediasource = xDoc.GetElementsByTagName("SOURCE");
XmlNodeList inkused = xDoc.GetElementsByTagName("INK_USED");
XmlNodeList consumeY = xDoc.GetElementsByTagName("CONSUME");
XmlNodeList consumeM = xDoc.GetElementsByTagName("CONSUME");
XmlNodeList consumeB = xDoc.GetElementsByTagName("CONSUME");
XmlNodeList consumeC = xDoc.GetElementsByTagName("CONSUME");
count = jobname.Count;
al = new ArrayList(count);
for (i = 0; i <= count-1; i++)
{
al.Add(
"Job Name: " + jobname[i].Attributes[0].InnerText + "\r\n" +
"Unique ID: " + uniqueid[i].Attributes[0].InnerText + "\r\n" +
"Account ID: " + accountid[i].Attributes[0].InnerText + "\r\n" +
"User Defined: " + userdefined[i].Attributes[0].InnerText + "\r\n" +
"Time Stamp: " + timestamp[i].Attributes[0].InnerText + "\r\n" +
"Printing Time Stamp: " + printingtimestamp[i].Attributes[0].InnerText + "\r\n" +
"Job Status: " + jobstatus[i].Attributes[0].InnerText + "\r\n" +
"Username: " + username[i].Attributes[0].InnerText + "\r\n" +
//"Accounting Source: " + accountingsource[i].Attributes[0].InnerText + "\r\n" +
"Ink Coverage Category: " + inkcoveragecategory[i].Attributes[0].InnerText + "\r\n" +
"Print Quality: " + printquality[i].Attributes[0].InnerText + "\r\n" +
"Print Type: " + printtype[i].Attributes[0].InnerText + "\r\n" +
"Pages: " + pages[i].Attributes[0].InnerText + "\r\n" +
"Copies: " + copies[i].Attributes[0].InnerText + "\r\n" +
"Printing Time Units: " + printingtime[i].Attributes[0].InnerText + "\r\n" +
"Printing Time: " + printingtime[i].Attributes[1].InnerText + "\r\n" +
"Media Vendor Name: " + name[i].Attributes[0].InnerText + "\r\n" +
"Media Name: " + name[i].Attributes[1].InnerText + "\r\n" +
"Media Quantity Units: " + quantity[i].Attributes[0].InnerText + "\r\n" +
"Media Quantity: " + quantity[i].Attributes[1].InnerText + "\r\n" +
"Size Units: " + size[i].Attributes[0].InnerText + "\r\n" +
"Width: " + width[i].Attributes[0].InnerText + "\r\n" +
"Length: " + length[i].Attributes[0].InnerText + "\r\n" +
//"Media Source: " + mediasource[i].Attributes[0].InnerText + "\r\n" +
"Ink Units: " + inkused[i].Attributes[0].InnerText + "\r\n" +
"Color Yellow: " + consumeY[i].Attributes[1].InnerText + "\r\n" +
"Color Magenta: " + consumeM[i].Attributes[1].InnerText + "\r\n" +
"Color Black: " + consumeB[i].Attributes[1].InnerText + "\r\n" +
"Color Cyan: " + consumeC[i].Attributes[1].InnerText
);
}
}
Reply
Answers (
1
)
How to create an user login in C# with Forms
how can we get chat from local messenger