๐ R โ Reading XML and JSON Data (with Code Explanation)
๐งฒ Introduction โ Parsing Web & Nested Data in R
Modern data often comes in structured hierarchical formats like XML (used in config and APIs) or JSON (standard for web APIs, NoSQL). R provides packages to import and parse both XML and JSON easily into usable data frames or lists.
๐ฏ In this guide, youโll learn:
- How to read and parse XML and JSON files in R
- Convert them into structured R objects
- Understand how to extract nested data with practical code and explanations
๐ 1. Reading XML Files in R
โ
 Step 1: Install and Load the xml2 Package
install.packages("xml2")
library(xml2)
โ Step 2: Read an XML File
xml_data <- read_xml("books.xml")
๐ Explanation:
- read_xml()reads the XML structure into an R xml_document object.
- books.xmlis your local or web-based XML file.
โ Step 3: Explore XML Content
xml_name(xml_data)        # Root node name
xml_children(xml_data)    # Get child nodes
โ Step 4: Extract Specific Tags
Assume this structure:
<book>
  <title>R Programming</title>
  <author>John Doe</author>
</book>
titles <- xml_find_all(xml_data, ".//title")
xml_text(titles)
๐ Explanation:
- xml_find_all()selects all- <title>tags.
- xml_text()extracts the text values inside those nodes.
๐งพ Output:
[1] "R Programming"
๐งพ 2. Reading JSON Files in R
โ
 Step 1: Install and Load the jsonlite Package
install.packages("jsonlite")
library(jsonlite)
โ Step 2: Read a JSON File
json_data <- fromJSON("students.json")
๐ Explanation:
- fromJSON()reads the JSON file and automatically converts it into a list or data frame, depending on structure.
- Perfect for nested objects like:
{
  "name": "Alice",
  "scores": [90, 85, 92]
}
โ Step 3: Access JSON Data
json_data$name      # "Alice"
json_data$scores    # 90 85 92
โ Step 4: Nested JSON Structure Example
{
  "students": [
    { "name": "Alice", "age": 23 },
    { "name": "Bob", "age": 25 }
  ]
}
json_data <- fromJSON("students.json")
df <- json_data$students
๐งพ Output:
   name age
1 Alice  23
2   Bob  25
๐ Load JSON or XML from Web URLs
๐ Read JSON from URL
fromJSON("https://api.example.com/data.json")
๐ Read XML from URL
read_xml("https://example.com/data.xml")
โ Works directly with API endpoints and web-accessible files.
โ ๏ธ Handling Common Issues
| Problem | Fix or Tip | 
|---|---|
| File not found | Use getwd()to check working directory | 
| Invalid XML/JSON structure | Validate using online validators before parsing | 
| Nested structure too deep | Use str()to explore and extract manually | 
| Encoding problems | Use encoding = "UTF-8"inreadLines()if needed | 
๐ Summary โ Recap & Next Steps
R makes it simple to work with web and hierarchical data like XML and JSON. These formats are widely used in web APIs, data exchange, and configuration files.
๐ Key Takeaways:
- Use xml2::read_xml()andjsonlite::fromJSON()for parsing
- Access nested content using indexing or helper functions
- Use xml_text(),xml_find_all(),str(), and$for exploration
- Load from local or web sources with ease
- Convert structured data into data frames for analysis
โ๏ธ Real-World Relevance:
Used in API integrations (e.g., weather, finance, healthcare), configuration systems, cloud dashboards, and data science automation.
โ FAQs โ Reading XML and JSON in R
โ How do I read an XML file from a URL in R?
โ
 Use read_xml():
read_xml("https://example.com/file.xml")
โ What package is best for parsing JSON in R?
โ
 jsonlite is widely used and converts JSON into data frames or lists easily.
โ How do I convert nested JSON into a data frame?
โ
 Use fromJSON() and access nested keys:
df <- fromJSON("file.json")$students
โ Can I write back to JSON or XML in R?
โ
 Yes:
- Use toJSON()fromjsonlitefor JSON.
- Use xml2::write_xml()orwriteLines()for XML.
โ How do I validate XML or JSON before reading?
โ
 Use online tools like jsonlint.com or xmlvalidation.com to verify structure.
Share Now :
