diff --git a/src/cli.cpp b/src/cli.cpp
index efa9f7c..fec77d1 100644
--- a/src/cli.cpp
+++ b/src/cli.cpp
@@ -40,15 +40,16 @@
   will be used to find a schema for that module.
 
 Usage:
-  yang-cli [--configonly] [-s <search_dir>] [-e enable_features]... [-i data_file]... <schema_file_or_module_name>...
+  yang-cli [--configonly] [--ignore-unknown-data] [-s <search_dir>] [-e enable_features]... [-i data_file]... <schema_file_or_module_name>...
   yang-cli (-h | --help)
   yang-cli --version
 
 Options:
-  -s <search_dir>       Set search for schema lookup
-  -e <enable_features>  Feature to enable after modules are loaded. This option can be supplied more than once. Format: <module_name>:<feature>
-  -i <data_file>        File to import data from
-  --configonly          Disable editing of operational data)";
+  -s <search_dir>        Set search for schema lookup
+  -e <enable_features>   Feature to enable after modules are loaded. This option can be supplied more than once. Format: <module_name>:<feature>
+  -i <data_file>         File to import data from
+  --configonly           Disable editing of operational data
+  --ignore-unknown-data  Silently ignore data with no available schema file)";
 #elif defined(NETCONF_CLI)
 // FIXME: improve usage
 static const auto usage = R"(CLI interface for NETCONF
@@ -154,9 +155,12 @@
             }
         }
     }
+
+    auto strict = args.at("--ignore-unknown-data").asBool() ? StrictDataParsing::No : StrictDataParsing::Yes;
+
     if (const auto& dataFiles = args["-i"]) {
         for (const auto& dataFile : dataFiles.asStringList()) {
-            datastore->addDataFile(dataFile);
+            datastore->addDataFile(dataFile, strict);
         }
     }
 #elif defined(NETCONF_CLI)
diff --git a/src/yang_access.cpp b/src/yang_access.cpp
index b8631d5..0555616 100644
--- a/src/yang_access.cpp
+++ b/src/yang_access.cpp
@@ -312,14 +312,19 @@
     m_schema->enableFeature(module, feature);
 }
 
-void YangAccess::addDataFile(const std::string& path)
+void YangAccess::addDataFile(const std::string& path, const StrictDataParsing strict)
 {
     std::ifstream fs(path);
     char firstChar;
     fs >> firstChar;
 
     std::cout << "Parsing \"" << path << "\" as " << (firstChar == '{' ? "JSON" : "XML") << "...\n";
-    auto dataNode = lyd_parse_path(m_ctx.get(), path.c_str(), firstChar == '{' ? LYD_JSON : LYD_XML, LYD_OPT_DATA | LYD_OPT_DATA_NO_YANGLIB | LYD_OPT_TRUSTED);
+
+    auto parseFlags = LYD_OPT_DATA | LYD_OPT_DATA_NO_YANGLIB | LYD_OPT_TRUSTED;
+    if (strict == StrictDataParsing::Yes) {
+        parseFlags |= LYD_OPT_STRICT;
+    }
+    auto dataNode = lyd_parse_path(m_ctx.get(), path.c_str(), firstChar == '{' ? LYD_JSON : LYD_XML, parseFlags);
 
     if (!dataNode) {
         throw std::runtime_error("Supplied data file " + path + " couldn't be parsed.");
diff --git a/src/yang_access.hpp b/src/yang_access.hpp
index c009420..64538f0 100644
--- a/src/yang_access.hpp
+++ b/src/yang_access.hpp
@@ -13,6 +13,11 @@
  *     \brief Implementation of DatastoreAccess with a local libyang data node instance
  */
 
+enum class StrictDataParsing {
+    Yes,
+    No
+};
+
 class YangSchema;
 
 struct ly_ctx;
@@ -41,7 +46,7 @@
     void loadModule(const std::string& name);
     void addSchemaFile(const std::string& path);
     void addSchemaDir(const std::string& path);
-    void addDataFile(const std::string& path);
+    void addDataFile(const std::string& path, const StrictDataParsing strict);
 
 private:
     std::vector<ListInstance> listInstances(const std::string& path) override;
