Skip to content

Instantly share code, notes, and snippets.

@jubnzv
Last active June 4, 2020 04:40
Show Gist options
  • Save jubnzv/30d3c67604a260f358903192db10e55f to your computer and use it in GitHub Desktop.
Save jubnzv/30d3c67604a260f358903192db10e55f to your computer and use it in GitHub Desktop.
<?xml version="1.0" encoding="ISO-8859-1" standalone="yes"?>
<Order>
<Customer>
<Name>Bill Buckram</Name>
<Cardnum>234 234 234 234</Cardnum>
</Customer>
<Manifest>
<Item>
<ID>209</ID>
<Title>
Duke: A Biography of the Java Evangelist
</Title>
<Quantity>1</Quantity>
<UnitPrice>$10.75</UnitPrice>
</Item>
<Item>
<ID>208</ID>
<Title>
100% Pure: Making Cross Platform Deployment a Reality
</Title>
<Quantity>1</Quantity>
<UnitPrice>$10.75</UnitPrice>
</Item>
<Item>
<ID>204</ID>
<Title>
Making the Transition from C++ to the Java(tm) Language
</Title>
<Quantity>1</Quantity>
<UnitPrice>$10.75</UnitPrice>
</Item>
<Item>
<ID>202</ID>
<Title>Web Servers for Fun and Profit</Title>
<Quantity>1</Quantity>
<UnitPrice>$10.75</UnitPrice>
</Item>
<Item>
<ID>210</ID>
<Title>
I Think Not: Dukes Likeness to the Federation Insignia
</Title>
<Quantity>1</Quantity>
<UnitPrice>$10.75</UnitPrice>
</Item>
</Manifest>
<Manifest>
<Item>
<ID>209</ID>
<Title>
Duke: A Biography of the Java Evangelist
</Title>
<Quantity>1</Quantity>
<UnitPrice>$10.75</UnitPrice>
</Item>
<Item>
<ID>208</ID>
<Title>
100% Pure: Making Cross Platform Deployment a Reality
</Title>
<Quantity>1</Quantity>
<UnitPrice>$10.75</UnitPrice>
</Item>
<Item>
<ID>204</ID>
<Title>
Making the Transition from C++ to the Java(tm) Language
</Title>
<Quantity>1</Quantity>
<UnitPrice>$10.75</UnitPrice>
</Item>
<Item>
<ID>202</ID>
<Title>Web Servers for Fun and Profit</Title>
<Quantity>1</Quantity>
<UnitPrice>$10.75</UnitPrice>
</Item>
<Item>
<ID>210</ID>
<Title>
I Think Not: Dukes Likeness to the Federation Insignia
</Title>
<Quantity>1</Quantity>
<UnitPrice>$10.75</UnitPrice>
</Item>
</Manifest>
<Manifest>
<Item>
<ID>209</ID>
<Title>
Duke: A Biography of the Java Evangelist
</Title>
<Quantity>1</Quantity>
<UnitPrice>$10.75</UnitPrice>
</Item>
<Item>
<ID>208</ID>
<Title>
100% Pure: Making Cross Platform Deployment a Reality
</Title>
<Quantity>1</Quantity>
<UnitPrice>$10.75</UnitPrice>
</Item>
<Item>
<ID>204</ID>
<Title>
Making the Transition from C++ to the Java(tm) Language
</Title>
<Quantity>1</Quantity>
<UnitPrice>$10.75</UnitPrice>
</Item>
<Item>
<ID>202</ID>
<Title>Web Servers for Fun and Profit</Title>
<Quantity>1</Quantity>
<UnitPrice>$10.75</UnitPrice>
</Item>
<Item>
<ID>210</ID>
<Title>
I Think Not: Dukes Likeness to the Federation Insignia
</Title>
<Quantity>1</Quantity>
<UnitPrice>$10.75</UnitPrice>
</Item>
</Manifest>
<Manifest>
<Item>
<ID>209</ID>
<Title>
Duke: A Biography of the Java Evangelist
</Title>
<Quantity>1</Quantity>
<UnitPrice>$10.75</UnitPrice>
</Item>
<Item>
<ID>208</ID>
<Title>
100% Pure: Making Cross Platform Deployment a Reality
</Title>
<Quantity>1</Quantity>
<UnitPrice>$10.75</UnitPrice>
</Item>
<Item>
<ID>204</ID>
<Title>
Making the Transition from C++ to the Java(tm) Language
</Title>
<Quantity>1</Quantity>
<UnitPrice>$10.75</UnitPrice>
</Item>
<Item>
<ID>202</ID>
<Title>Web Servers for Fun and Profit</Title>
<Quantity>1</Quantity>
<UnitPrice>$10.75</UnitPrice>
</Item>
<Item>
<ID>210</ID>
<Title>
I Think Not: Dukes Likeness to the Federation Insignia
</Title>
<Quantity>1</Quantity>
<UnitPrice>$10.75</UnitPrice>
</Item>
</Manifest>
<Manifest>
<Item>
<ID>209</ID>
<Title>
Duke: A Biography of the Java Evangelist
</Title>
<Quantity>1</Quantity>
<UnitPrice>$10.75</UnitPrice>
</Item>
<Item>
<ID>208</ID>
<Title>
100% Pure: Making Cross Platform Deployment a Reality
</Title>
<Quantity>1</Quantity>
<UnitPrice>$10.75</UnitPrice>
</Item>
<Item>
<ID>204</ID>
<Title>
Making the Transition from C++ to the Java(tm) Language
</Title>
<Quantity>1</Quantity>
<UnitPrice>$10.75</UnitPrice>
</Item>
<Item>
<ID>202</ID>
<Title>Web Servers for Fun and Profit</Title>
<Quantity>1</Quantity>
<UnitPrice>$10.75</UnitPrice>
</Item>
<Item>
<ID>210</ID>
<Title>
I Think Not: Dukes Likeness to the Federation Insignia
</Title>
<Quantity>1</Quantity>
<UnitPrice>$10.75</UnitPrice>
</Item>
</Manifest>
<Manifest>
<Item>
<ID>209</ID>
<Title>
Duke: A Biography of the Java Evangelist
</Title>
<Quantity>1</Quantity>
<UnitPrice>$10.75</UnitPrice>
</Item>
<Item>
<ID>208</ID>
<Title>
100% Pure: Making Cross Platform Deployment a Reality
</Title>
<Quantity>1</Quantity>
<UnitPrice>$10.75</UnitPrice>
</Item>
<Item>
<ID>204</ID>
<Title>
Making the Transition from C++ to the Java(tm) Language
</Title>
<Quantity>1</Quantity>
<UnitPrice>$10.75</UnitPrice>
</Item>
<Item>
<ID>202</ID>
<Title>Web Servers for Fun and Profit</Title>
<Quantity>1</Quantity>
<UnitPrice>$10.75</UnitPrice>
</Item>
<Item>
<ID>210</ID>
<Title>
I Think Not: Dukes Likeness to the Federation Insignia
</Title>
<Quantity>1</Quantity>
<UnitPrice>$10.75</UnitPrice>
</Item>
</Manifest>
<Manifest>
<Item>
<ID>209</ID>
<Title>
Duke: A Biography of the Java Evangelist
</Title>
<Quantity>1</Quantity>
<UnitPrice>$10.75</UnitPrice>
</Item>
<Item>
<ID>208</ID>
<Title>
100% Pure: Making Cross Platform Deployment a Reality
</Title>
<Quantity>1</Quantity>
<UnitPrice>$10.75</UnitPrice>
</Item>
<Item>
<ID>204</ID>
<Title>
Making the Transition from C++ to the Java(tm) Language
</Title>
<Quantity>1</Quantity>
<UnitPrice>$10.75</UnitPrice>
</Item>
<Item>
<ID>202</ID>
<Title>Web Servers for Fun and Profit</Title>
<Quantity>1</Quantity>
<UnitPrice>$10.75</UnitPrice>
</Item>
<Item>
<ID>210</ID>
<Title>
I Think Not: Dukes Likeness to the Federation Insignia
</Title>
<Quantity>1</Quantity>
<UnitPrice>$10.75</UnitPrice>
</Item>
</Manifest>
<Manifest>
<Item>
<ID>209</ID>
<Title>
Duke: A Biography of the Java Evangelist
</Title>
<Quantity>1</Quantity>
<UnitPrice>$10.75</UnitPrice>
</Item>
<Item>
<ID>208</ID>
<Title>
100% Pure: Making Cross Platform Deployment a Reality
</Title>
<Quantity>1</Quantity>
<UnitPrice>$10.75</UnitPrice>
</Item>
<Item>
<ID>204</ID>
<Title>
Making the Transition from C++ to the Java(tm) Language
</Title>
<Quantity>1</Quantity>
<UnitPrice>$10.75</UnitPrice>
</Item>
<Item>
<ID>202</ID>
<Title>Web Servers for Fun and Profit</Title>
<Quantity>1</Quantity>
<UnitPrice>$10.75</UnitPrice>
</Item>
<Item>
<ID>210</ID>
<Title>
I Think Not: Dukes Likeness to the Federation Insignia
</Title>
<Quantity>1</Quantity>
<UnitPrice>$10.75</UnitPrice>
</Item>
</Manifest>
<Manifest>
<Item>
<ID>209</ID>
<Title>
Duke: A Biography of the Java Evangelist
</Title>
<Quantity>1</Quantity>
<UnitPrice>$10.75</UnitPrice>
</Item>
<Item>
<ID>208</ID>
<Title>
100% Pure: Making Cross Platform Deployment a Reality
</Title>
<Quantity>1</Quantity>
<UnitPrice>$10.75</UnitPrice>
</Item>
<Item>
<ID>204</ID>
<Title>
Making the Transition from C++ to the Java(tm) Language
</Title>
<Quantity>1</Quantity>
<UnitPrice>$10.75</UnitPrice>
</Item>
<Item>
<ID>202</ID>
<Title>Web Servers for Fun and Profit</Title>
<Quantity>1</Quantity>
<UnitPrice>$10.75</UnitPrice>
</Item>
<Item>
<ID>210</ID>
<Title>
I Think Not: Dukes Likeness to the Federation Insignia
</Title>
<Quantity>1</Quantity>
<UnitPrice>$10.75</UnitPrice>
</Item>
</Manifest>
<Manifest>
<Item>
<ID>209</ID>
<Title>
Duke: A Biography of the Java Evangelist
</Title>
<Quantity>1</Quantity>
<UnitPrice>$10.75</UnitPrice>
</Item>
<Item>
<ID>208</ID>
<Title>
100% Pure: Making Cross Platform Deployment a Reality
</Title>
<Quantity>1</Quantity>
<UnitPrice>$10.75</UnitPrice>
</Item>
<Item>
<ID>204</ID>
<Title>
Making the Transition from C++ to the Java(tm) Language
</Title>
<Quantity>1</Quantity>
<UnitPrice>$10.75</UnitPrice>
</Item>
<Item>
<ID>202</ID>
<Title>Web Servers for Fun and Profit</Title>
<Quantity>1</Quantity>
<UnitPrice>$10.75</UnitPrice>
</Item>
<Item>
<ID>210</ID>
<Title>
I Think Not: Dukes Likeness to the Federation Insignia
</Title>
<Quantity>1</Quantity>
<UnitPrice>$10.75</UnitPrice>
</Item>
</Manifest>
<Manifest>
<Item>
<ID>209</ID>
<Title>
Duke: A Biography of the Java Evangelist
</Title>
<Quantity>1</Quantity>
<UnitPrice>$10.75</UnitPrice>
</Item>
<Item>
<ID>208</ID>
<Title>
100% Pure: Making Cross Platform Deployment a Reality
</Title>
<Quantity>1</Quantity>
<UnitPrice>$10.75</UnitPrice>
</Item>
<Item>
<ID>204</ID>
<Title>
Making the Transition from C++ to the Java(tm) Language
</Title>
<Quantity>1</Quantity>
<UnitPrice>$10.75</UnitPrice>
</Item>
<Item>
<ID>202</ID>
<Title>Web Servers for Fun and Profit</Title>
<Quantity>1</Quantity>
<UnitPrice>$10.75</UnitPrice>
</Item>
<Item>
<ID>210</ID>
<Title>
I Think Not: Dukes Likeness to the Federation Insignia
</Title>
<Quantity>1</Quantity>
<UnitPrice>$10.75</UnitPrice>
</Item>
</Manifest>
<Manifest>
<Item>
<ID>209</ID>
<Title>
Duke: A Biography of the Java Evangelist
</Title>
<Quantity>1</Quantity>
<UnitPrice>$10.75</UnitPrice>
</Item>
<Item>
<ID>208</ID>
<Title>
100% Pure: Making Cross Platform Deployment a Reality
</Title>
<Quantity>1</Quantity>
<UnitPrice>$10.75</UnitPrice>
</Item>
<Item>
<ID>204</ID>
<Title>
Making the Transition from C++ to the Java(tm) Language
</Title>
<Quantity>1</Quantity>
<UnitPrice>$10.75</UnitPrice>
</Item>
<Item>
<ID>202</ID>
<Title>Web Servers for Fun and Profit</Title>
<Quantity>1</Quantity>
<UnitPrice>$10.75</UnitPrice>
</Item>
<Item>
<ID>210</ID>
<Title>
I Think Not: Dukes Likeness to the Federation Insignia
</Title>
<Quantity>1</Quantity>
<UnitPrice>$10.75</UnitPrice>
</Item>
</Manifest>
<Manifest>
<Item>
<ID>209</ID>
<Title>
Duke: A Biography of the Java Evangelist
</Title>
<Quantity>1</Quantity>
<UnitPrice>$10.75</UnitPrice>
</Item>
<Item>
<ID>208</ID>
<Title>
100% Pure: Making Cross Platform Deployment a Reality
</Title>
<Quantity>1</Quantity>
<UnitPrice>$10.75</UnitPrice>
</Item>
<Item>
<ID>204</ID>
<Title>
Making the Transition from C++ to the Java(tm) Language
</Title>
<Quantity>1</Quantity>
<UnitPrice>$10.75</UnitPrice>
</Item>
<Item>
<ID>202</ID>
<Title>Web Servers for Fun and Profit</Title>
<Quantity>1</Quantity>
<UnitPrice>$10.75</UnitPrice>
</Item>
<Item>
<ID>210</ID>
<Title>
I Think Not: Dukes Likeness to the Federation Insignia
</Title>
<Quantity>1</Quantity>
<UnitPrice>$10.75</UnitPrice>
</Item>
</Manifest>
<Manifest>
<Item>
<ID>209</ID>
<Title>
Duke: A Biography of the Java Evangelist
</Title>
<Quantity>1</Quantity>
<UnitPrice>$10.75</UnitPrice>
</Item>
<Item>
<ID>208</ID>
<Title>
100% Pure: Making Cross Platform Deployment a Reality
</Title>
<Quantity>1</Quantity>
<UnitPrice>$10.75</UnitPrice>
</Item>
<Item>
<ID>204</ID>
<Title>
Making the Transition from C++ to the Java(tm) Language
</Title>
<Quantity>1</Quantity>
<UnitPrice>$10.75</UnitPrice>
</Item>
<Item>
<ID>202</ID>
<Title>Web Servers for Fun and Profit</Title>
<Quantity>1</Quantity>
<UnitPrice>$10.75</UnitPrice>
</Item>
<Item>
<ID>210</ID>
<Title>
I Think Not: Dukes Likeness to the Federation Insignia
</Title>
<Quantity>1</Quantity>
<UnitPrice>$10.75</UnitPrice>
</Item>
</Manifest>
<Manifest>
<Item>
<ID>209</ID>
<Title>
Duke: A Biography of the Java Evangelist
</Title>
<Quantity>1</Quantity>
<UnitPrice>$10.75</UnitPrice>
</Item>
<Item>
<ID>208</ID>
<Title>
100% Pure: Making Cross Platform Deployment a Reality
</Title>
<Quantity>1</Quantity>
<UnitPrice>$10.75</UnitPrice>
</Item>
<Item>
<ID>204</ID>
<Title>
Making the Transition from C++ to the Java(tm) Language
</Title>
<Quantity>1</Quantity>
<UnitPrice>$10.75</UnitPrice>
</Item>
<Item>
<ID>202</ID>
<Title>Web Servers for Fun and Profit</Title>
<Quantity>1</Quantity>
<UnitPrice>$10.75</UnitPrice>
</Item>
<Item>
<ID>210</ID>
<Title>
I Think Not: Dukes Likeness to the Federation Insignia
</Title>
<Quantity>1</Quantity>
<UnitPrice>$10.75</UnitPrice>
</Item>
</Manifest>
<Manifest>
<Item>
<ID>209</ID>
<Title>
Duke: A Biography of the Java Evangelist
</Title>
<Quantity>1</Quantity>
<UnitPrice>$10.75</UnitPrice>
</Item>
<Item>
<ID>208</ID>
<Title>
100% Pure: Making Cross Platform Deployment a Reality
</Title>
<Quantity>1</Quantity>
<UnitPrice>$10.75</UnitPrice>
</Item>
<Item>
<ID>204</ID>
<Title>
Making the Transition from C++ to the Java(tm) Language
</Title>
<Quantity>1</Quantity>
<UnitPrice>$10.75</UnitPrice>
</Item>
<Item>
<ID>202</ID>
<Title>Web Servers for Fun and Profit</Title>
<Quantity>1</Quantity>
<UnitPrice>$10.75</UnitPrice>
</Item>
<Item>
<ID>210</ID>
<Title>
I Think Not: Dukes Likeness to the Federation Insignia
</Title>
<Quantity>1</Quantity>
<UnitPrice>$10.75</UnitPrice>
</Item>
</Manifest>
<Manifest>
<Item>
<ID>209</ID>
<Title>
Duke: A Biography of the Java Evangelist
</Title>
<Quantity>1</Quantity>
<UnitPrice>$10.75</UnitPrice>
</Item>
<Item>
<ID>208</ID>
<Title>
100% Pure: Making Cross Platform Deployment a Reality
</Title>
<Quantity>1</Quantity>
<UnitPrice>$10.75</UnitPrice>
</Item>
<Item>
<ID>204</ID>
<Title>
Making the Transition from C++ to the Java(tm) Language
</Title>
<Quantity>1</Quantity>
<UnitPrice>$10.75</UnitPrice>
</Item>
<Item>
<ID>202</ID>
<Title>Web Servers for Fun and Profit</Title>
<Quantity>1</Quantity>
<UnitPrice>$10.75</UnitPrice>
</Item>
<Item>
<ID>210</ID>
<Title>
I Think Not: Dukes Likeness to the Federation Insignia
</Title>
<Quantity>1</Quantity>
<UnitPrice>$10.75</UnitPrice>
</Item>
</Manifest>
<Manifest>
<Item>
<ID>209</ID>
<Title>
Duke: A Biography of the Java Evangelist
</Title>
<Quantity>1</Quantity>
<UnitPrice>$10.75</UnitPrice>
</Item>
<Item>
<ID>208</ID>
<Title>
100% Pure: Making Cross Platform Deployment a Reality
</Title>
<Quantity>1</Quantity>
<UnitPrice>$10.75</UnitPrice>
</Item>
<Item>
<ID>204</ID>
<Title>
Making the Transition from C++ to the Java(tm) Language
</Title>
<Quantity>1</Quantity>
<UnitPrice>$10.75</UnitPrice>
</Item>
<Item>
<ID>202</ID>
<Title>Web Servers for Fun and Profit</Title>
<Quantity>1</Quantity>
<UnitPrice>$10.75</UnitPrice>
</Item>
<Item>
<ID>210</ID>
<Title>
I Think Not: Dukes Likeness to the Federation Insignia
</Title>
<Quantity>1</Quantity>
<UnitPrice>$10.75</UnitPrice>
</Item>
</Manifest>
<Manifest>
<Item>
<ID>209</ID>
<Title>
Duke: A Biography of the Java Evangelist
</Title>
<Quantity>1</Quantity>
<UnitPrice>$10.75</UnitPrice>
</Item>
<Item>
<ID>208</ID>
<Title>
100% Pure: Making Cross Platform Deployment a Reality
</Title>
<Quantity>1</Quantity>
<UnitPrice>$10.75</UnitPrice>
</Item>
<Item>
<ID>204</ID>
<Title>
Making the Transition from C++ to the Java(tm) Language
</Title>
<Quantity>1</Quantity>
<UnitPrice>$10.75</UnitPrice>
</Item>
<Item>
<ID>202</ID>
<Title>Web Servers for Fun and Profit</Title>
<Quantity>1</Quantity>
<UnitPrice>$10.75</UnitPrice>
</Item>
<Item>
<ID>210</ID>
<Title>
I Think Not: Dukes Likeness to the Federation Insignia
</Title>
<Quantity>1</Quantity>
<UnitPrice>$10.75</UnitPrice>
</Item>
</Manifest>
<Manifest>
<Item>
<ID>209</ID>
<Title>
Duke: A Biography of the Java Evangelist
</Title>
<Quantity>1</Quantity>
<UnitPrice>$10.75</UnitPrice>
</Item>
<Item>
<ID>208</ID>
<Title>
100% Pure: Making Cross Platform Deployment a Reality
</Title>
<Quantity>1</Quantity>
<UnitPrice>$10.75</UnitPrice>
</Item>
<Item>
<ID>204</ID>
<Title>
Making the Transition from C++ to the Java(tm) Language
</Title>
<Quantity>1</Quantity>
<UnitPrice>$10.75</UnitPrice>
</Item>
<Item>
<ID>202</ID>
<Title>Web Servers for Fun and Profit</Title>
<Quantity>1</Quantity>
<UnitPrice>$10.75</UnitPrice>
</Item>
<Item>
<ID>210</ID>
<Title>
I Think Not: Dukes Likeness to the Federation Insignia
</Title>
<Quantity>1</Quantity>
<UnitPrice>$10.75</UnitPrice>
</Item>
</Manifest>
<Receipt>
<Subtotal>$53.75</Subtotal>
<Tax>$4.43</Tax>
<Total>$58.18</Total>
</Receipt>
<Manifest>
<Item>
<ID>209</ID>
<Title>
Duke: A Biography of the Java Evangelist
</Title>
<Quantity>1</Quantity>
<UnitPrice>$10.75</UnitPrice>
</Item>
<Item>
<ID>208</ID>
<Title>
100% Pure: Making Cross Platform Deployment a Reality
</Title>
<Quantity>1</Quantity>
<UnitPrice>$10.75</UnitPrice>
</Item>
<Item>
<ID>204</ID>
<Title>
Making the Transition from C++ to the Java(tm) Language
</Title>
<Quantity>1</Quantity>
<UnitPrice>$10.75</UnitPrice>
</Item>
<Item>
<ID>202</ID>
<Title>Web Servers for Fun and Profit</Title>
<Quantity>1</Quantity>
<UnitPrice>$10.75</UnitPrice>
</Item>
<Item>
<ID>210</ID>
<Title>
I Think Not: Dukes Likeness to the Federation Insignia
</Title>
<Quantity>1</Quantity>
<UnitPrice>$10.75</UnitPrice>
</Item>
</Manifest>
<Receipt>
<Subtotal>$53.75</Subtotal>
<Tax>$4.43</Tax>
<Total>$58.18</Total>
</Receipt><Manifest>
<Item>
<ID>209</ID>
<Title>
Duke: A Biography of the Java Evangelist
</Title>
<Quantity>1</Quantity>
<UnitPrice>$10.75</UnitPrice>
</Item>
<Item>
<ID>208</ID>
<Title>
100% Pure: Making Cross Platform Deployment a Reality
</Title>
<Quantity>1</Quantity>
<UnitPrice>$10.75</UnitPrice>
</Item>
<Item>
<ID>204</ID>
<Title>
Making the Transition from C++ to the Java(tm) Language
</Title>
<Quantity>1</Quantity>
<UnitPrice>$10.75</UnitPrice>
</Item>
<Item>
<ID>202</ID>
<Title>Web Servers for Fun and Profit</Title>
<Quantity>1</Quantity>
<UnitPrice>$10.75</UnitPrice>
</Item>
<Item>
<ID>210</ID>
<Title>
I Think Not: Dukes Likeness to the Federation Insignia
</Title>
<Quantity>1</Quantity>
<UnitPrice>$10.75</UnitPrice>
</Item>
</Manifest>
<Receipt>
<Subtotal>$53.75</Subtotal>
<Tax>$4.43</Tax>
<Total>$58.18</Total>
</Receipt><Manifest>
<Item>
<ID>209</ID>
<Title>
Duke: A Biography of the Java Evangelist
</Title>
<Quantity>1</Quantity>
<UnitPrice>$10.75</UnitPrice>
</Item>
<Item>
<ID>208</ID>
<Title>
100% Pure: Making Cross Platform Deployment a Reality
</Title>
<Quantity>1</Quantity>
<UnitPrice>$10.75</UnitPrice>
</Item>
<Item>
<ID>204</ID>
<Title>
Making the Transition from C++ to the Java(tm) Language
</Title>
<Quantity>1</Quantity>
<UnitPrice>$10.75</UnitPrice>
</Item>
<Item>
<ID>202</ID>
<Title>Web Servers for Fun and Profit</Title>
<Quantity>1</Quantity>
<UnitPrice>$10.75</UnitPrice>
</Item>
<Item>
<ID>210</ID>
<Title>
I Think Not: Dukes Likeness to the Federation Insignia
</Title>
<Quantity>1</Quantity>
<UnitPrice>$10.75</UnitPrice>
</Item>
</Manifest>
<Receipt>
<Subtotal>$53.75</Subtotal>
<Tax>$4.43</Tax>
<Total>$58.18</Total>
</Receipt>
<Manifest>
<Item>
<ID>209</ID>
<Title>
Duke: A Biography of the Java Evangelist
</Title>
<Quantity>1</Quantity>
<UnitPrice>$10.75</UnitPrice>
</Item>
<Item>
<ID>208</ID>
<Title>
100% Pure: Making Cross Platform Deployment a Reality
</Title>
<Quantity>1</Quantity>
<UnitPrice>$10.75</UnitPrice>
</Item>
<Item>
<ID>204</ID>
<Title>
Making the Transition from C++ to the Java(tm) Language
</Title>
<Quantity>1</Quantity>
<UnitPrice>$10.75</UnitPrice>
</Item>
<Item>
<ID>202</ID>
<Title>Web Servers for Fun and Profit</Title>
<Quantity>1</Quantity>
<UnitPrice>$10.75</UnitPrice>
</Item>
<Item>
<ID>210</ID>
<Title>
I Think Not: Dukes Likeness to the Federation Insignia
</Title>
<Quantity>1</Quantity>
<UnitPrice>$10.75</UnitPrice>
</Item>
</Manifest>
<Receipt>
<Subtotal>$53.75</Subtotal>
<Tax>$4.43</Tax>
<Total>$58.18</Total>
</Receipt>
<Manifest>
<Item>
<ID>209</ID>
<Title>
Duke: A Biography of the Java Evangelist
</Title>
<Quantity>1</Quantity>
<UnitPrice>$10.75</UnitPrice>
</Item>
<Item>
<ID>208</ID>
<Title>
100% Pure: Making Cross Platform Deployment a Reality
</Title>
<Quantity>1</Quantity>
<UnitPrice>$10.75</UnitPrice>
</Item>
<Item>
<ID>204</ID>
<Title>
Making the Transition from C++ to the Java(tm) Language
</Title>
<Quantity>1</Quantity>
<UnitPrice>$10.75</UnitPrice>
</Item>
<Item>
<ID>202</ID>
<Title>Web Servers for Fun and Profit</Title>
<Quantity>1</Quantity>
<UnitPrice>$10.75</UnitPrice>
</Item>
<Item>
<ID>210</ID>
<Title>
I Think Not: Dukes Likeness to the Federation Insignia
</Title>
<Quantity>1</Quantity>
<UnitPrice>$10.75</UnitPrice>
</Item>
</Manifest>
<Receipt>
<Subtotal>$53.75</Subtotal>
<Tax>$4.43</Tax>
<Total>$58.18</Total>
</Receipt>
</Order>
open Core_kernel
(* Sequential processing *)
let id ic oc =
let i = Xmlm.make_input (`Channel ic) in
let o = Xmlm.make_output (`Channel oc) in
let rec pull i o depth =
Xmlm.output o (Xmlm.peek i);
match Xmlm.input i with
| `El_start _ -> pull i o (depth + 1)
| `El_end -> if depth = 1 then () else pull i o (depth - 1)
| `Data _ -> pull i o depth
| `Dtd _ -> assert false
in
Xmlm.output o (Xmlm.input i); (* `Dtd *)
pull i o 0;
if not (Xmlm.eoi i) then invalid_arg "document not well-formed"
let id_seq ic oc =
let i = Xmlm.make_input (`Channel ic) in
let o = Xmlm.make_output ~nl:true (`Channel oc) in
while not (Xmlm.eoi i) do Xmlm.output o (Xmlm.input i) done
let prune_docs prune_list ic oc =
let i = Xmlm.make_input (`Channel ic) in
let o = Xmlm.make_output ~nl:true (`Channel oc) in
let copy i o = Xmlm.output o (Xmlm.input i) in
let prune (name, _) = List.mem prune_list name ~equal:String.equal in
let rec process i o d =
let rec skip i d = match Xmlm.input i with
| `El_start _ -> skip i (d + 1)
| `El_end -> if d = 1 then () else skip i (d - 1)
| _ -> skip i d
in
match Xmlm.peek i with
| `El_start ((_, tag), attrs) when prune (tag, attrs) -> skip i 0; process i o d
| `El_start _ -> copy i o; process i o (d + 1)
| `El_end -> copy i o; if d = 0 then () else process i o (d - 1)
| `Data _ -> copy i o; process i o d
| `Dtd _ -> assert false
in
let rec docs i o =
copy i o; (* `Dtd *)
copy i o; (* root start *)
process i o 0;
if Xmlm.eoi i then () else docs i o
in
docs i o
let () =
let inx = In_channel.create "book.xml" in
let oux = Out_channel.create "book-pruned.xml" in
let prune_list = ["UnitPrice";"ID"] in
prune_docs prune_list inx oux;
In_channel.close inx;
Out_channel.close oux;
()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment