eXtensible Markup Language
Tech Talk by Ruth Naebeck
![](https://s3.amazonaws.com/media-p.slid.es/uploads/693842/images/3694872/XML-logo.jpg)
Agenda
- Introduction to XML
- Creating XMLs
- Extracting Data from XMLs
What is XML?
- Markup Language
- No pre-defined tags
- Does nothing
<?xml version="1.0" encoding="UTF-8"?>
<Animals>
<Puppy id="101">
<name>Rover</name>
<breed>Pug</breed>
<color>Brown</color>
<image>rover.jpg</image>
</Puppy>
<Puppy id="102">
<name>Spot</name>
<color>Black and White</color>
<image>spot.jpg</image>
</Puppy>
<!-- Kittens start here -->
<Kitten type="tabby">
<name>Sherry</name>
<color>Orange and White</color>
<image>sherry.jpg</image>
</Kitten>
<Kitten>
<name>Whiskers</name>
<color>Gray</color>
<image>whiskers.jpg</image>
</Kitten>
</Animals>
XML Job Search
Indeed.com within 5 miles:
![](https://s3.amazonaws.com/media-p.slid.es/uploads/693842/images/3703235/pasted-from-clipboard.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/693842/images/3703263/jpmc_logo.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/693842/images/3703268/mlbam_logo.jpeg)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/693842/images/3703273/WebMD_logo.jpeg)
XML Uses
- Complement HTML
- Transaction Data
- Data Transformation
![](https://s3.amazonaws.com/media-p.slid.es/uploads/693842/images/3695159/StockMarketData.jpg)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/693842/images/3695211/DataTransform.png)
Creating XML Files
XML Tree
- Root (required)
- Parent
- Child
- Sibling
<?xml version="1.0" encoding="UTF-8"?>
<Animals>
<Puppy id="101">
<name>Rover</name>
<breed>Pug</breed>
<color>Brown</color>
<image>rover.jpg</image>
</Puppy>
<Puppy id="102">
<name>Spot</name>
<color>Black and White</color>
<image>spot.jpg</image>
</Puppy>
<!-- Kittens start here -->
<Kitten type="tabby">
<name>Sherry</name>
<color>Orange and White</color>
<image>sherry.jpg</image>
</Kitten>
<Kitten>
<name>Whiskers</name>
<color>Gray</color>
<image>whiskers.jpg</image>
</Kitten>
</Animals>
XML Element
- Contents
- Empty Elements:
- <empty attribute="value" />
- Naming Rules
- Extensible
<?xml version="1.0" encoding="UTF-8"?>
<Animals>
<Puppy id="101">
<name>Rover</name>
<breed>Pug</breed>
<color>Brown</color>
<image>rover.jpg</image>
</Puppy>
<Puppy id="102">
<name>Spot</name>
<color>Black and White</color>
<image>spot.jpg</image>
</Puppy>
<!-- Kittens start here -->
<Kitten type="tabby">
<name>Sherry</name>
<color>Orange and White</color>
<image>sherry.jpg</image>
</Kitten>
<Kitten>
<name>Whiskers</name>
<color>Gray</color>
<image>whiskers.jpg</image>
</Kitten>
</Animals>
XML Attributes
- Must be Quoted
- No Rules
- Things to Consider
- Recommended Use
<?xml version="1.0" encoding="UTF-8"?>
<Animals>
<Puppy id="101">
<name>Rover</name>
<breed>Pug</breed>
<color>Brown</color>
<image>rover.jpg</image>
</Puppy>
<Puppy id="102">
<name>Spot</name>
<color>Black and White</color>
<image>spot.jpg</image>
</Puppy>
<!-- Kittens start here -->
<Kitten type="tabby">
<name>Sherry</name>
<color>Orange and White</color>
<image>sherry.jpg</image>
</Kitten>
<Kitten>
<name>Whiskers</name>
<color>Gray</color>
<image>whiskers.jpg</image>
</Kitten>
</Animals>
XML Data Extraction
Dealing with XML files created by others
XML DOM
XML Elements
![](https://s3.amazonaws.com/media-p.slid.es/uploads/693842/images/3729058/crud.png)
XML Nodes
- Document
- Elements
- Text
- Attributes
- Comments
<?xml version="1.0" encoding="UTF-8"?>
<Animals>
<Puppy id="101">
<name>Rover</name>
<breed>Pug</breed>
<color>Brown</color>
<image>rover.jpg</image>
</Puppy>
<Puppy id="102">
<name>Spot</name>
<color>Black and White</color>
<image>spot.jpg</image>
</Puppy>
<!-- Kittens start here -->
<Kitten type="tabby">
<name>Sherry</name>
<color>Orange and White</color>
<image>sherry.jpg</image>
</Kitten>
<Kitten>
<name>Whiskers</name>
<color>Gray</color>
<image>whiskers.jpg</image>
</Kitten>
</Animals>
Accessing Nodes
- XMLHttpRequest
- getElementsByTagName
- Looping / Traversing
- Node Relationships
- xPath
![](https://s3.amazonaws.com/media-p.slid.es/uploads/693842/images/3728730/Accessing.jpg)
XMLHttpRequest
var xhttp = new XMLHttpRequest()
xhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
myFunction(xhttp.responseXML)
}
}
xhttp.open("GET", "Animals.xml", true)
xhttp.send()
function myFunction(xml) {
// Custom code here
}
getElementsByTagName
![](https://s3.amazonaws.com/media-p.slid.es/uploads/693842/images/3728940/pasted-from-clipboard.png)
<?xml version="1.0" encoding="UTF-8"?>
<Animals>
<Puppy id="101">
<name>Rover</name>
<breed>Pug</breed>
<color>Brown</color>
<image>rover.jpg</image>
</Puppy>
<Puppy id="102">
<name>Spot</name>
<color>Black and White</color>
<image>spot.jpg</image>
</Puppy>
<!-- Kittens start here -->
<Kitten type="tabby">
<name>Sherry</name>
<color>Orange and White</color>
<image>sherry.jpg</image>
</Kitten>
<Kitten>
<name>Whiskers</name>
<color>Gray</color>
<image>whiskers.jpg</image>
</Kitten>
</Animals>
![](https://s3.amazonaws.com/media-p.slid.es/uploads/693842/images/3729289/pasted-from-clipboard.png)
Looping / Traversing
![](https://s3.amazonaws.com/media-p.slid.es/uploads/693842/images/3728884/pasted-from-clipboard.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/693842/images/3728897/pasted-from-clipboard.png)
puppies = array of nodes
- childNodes[1] = name node
- childNode[0] = text node
- nodeValue = text
- childNode[0] = text node
<?xml version="1.0" encoding="UTF-8"?>
<Animals>
<Puppy id="101">
<name>Rover</name>
<breed>Pug</breed>
<color>Brown</color>
<image>rover.jpg</image>
</Puppy>
<Puppy id="102">
<name>Spot</name>
<color>Black and White</color>
<image>spot.jpg</image>
</Puppy>
<!-- Kittens start here -->
<Kitten type="tabby">
<name>Sherry</name>
<color>Orange and White</color>
<image>sherry.jpg</image>
</Kitten>
<Kitten>
<name>Whiskers</name>
<color>Gray</color>
<image>whiskers.jpg</image>
</Kitten>
</Animals>
Node Relationships
![](https://s3.amazonaws.com/media-p.slid.es/uploads/693842/images/3728884/pasted-from-clipboard.png)
puppies = array of nodes
- firstElementChild = name node
- firstChild = text node
- nodeValue = text
- firstChild = text node
![](https://s3.amazonaws.com/media-p.slid.es/uploads/693842/images/3728936/pasted-from-clipboard.png)
<?xml version="1.0" encoding="UTF-8"?>
<Animals>
<Puppy id="101">
<name>Rover</name>
<breed>Pug</breed>
<color>Brown</color>
<image>rover.jpg</image>
</Puppy>
<Puppy id="102">
<name>Spot</name>
<color>Black and White</color>
<image>spot.jpg</image>
</Puppy>
<!-- Kittens start here -->
<Kitten type="tabby">
<name>Sherry</name>
<color>Orange and White</color>
<image>sherry.jpg</image>
</Kitten>
<Kitten>
<name>Whiskers</name>
<color>Gray</color>
<image>whiskers.jpg</image>
</Kitten>
</Animals>
xPath
- Selecting Nodes
- Predicates
- Wildcards
- xmlDoc.selectNodes
- xmlDoc.evaluate
![](https://s3.amazonaws.com/media-p.slid.es/uploads/693842/images/3729250/path.jpg)
xPath Solution
document.evaluate xPath
- returns xPathResult
- iterateNext method
- innerHTML
<?xml version="1.0" encoding="UTF-8"?>
<Animals>
<Puppy id="101">
<name>Rover</name>
<breed>Pug</breed>
<color>Brown</color>
<image>rover.jpg</image>
</Puppy>
<Puppy id="102">
<name>Spot</name>
<color>Black and White</color>
<image>spot.jpg</image>
</Puppy>
<!-- Kittens start here -->
<Kitten type="tabby">
<name>Sherry</name>
<color>Orange and White</color>
<image>sherry.jpg</image>
</Kitten>
<Kitten>
<name>Whiskers</name>
<color>Gray</color>
<image>whiskers.jpg</image>
</Kitten>
</Animals>
![](https://s3.amazonaws.com/media-p.slid.es/uploads/693842/images/3729040/pasted-from-clipboard.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/693842/images/3729273/pasted-from-clipboard.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/693842/images/3729274/pasted-from-clipboard.png)
Conclusion
- Introduction to XML
- Creating XMLs
- Extracting Data from XMLs
Thank You!
![](https://s3.amazonaws.com/media-p.slid.es/uploads/693842/images/3729052/spot.jpg)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/693842/images/3729056/Rover.jpg)
TechTalk
By ruthnaebeck
TechTalk
XML (eXtensible Markup Language)
- 307