当根目录中没有命名空间但在存在时没有检索任何名称空间时,我可以使用LINQ读取XML文档。
该代码用于逐步完成文档:
foreach (XElement element in doc.Descendants("Level1").Elements("Level2"))
我也尝试获取命名空间
var ns = doc.Root.Name.Namespace
foreach (XElement element in doc.Descendants(ns + "Level1").Elements("Level2"))
该文件列为
<?xml version="1.0" encoding="UTF-8"?>
<Root xmlns="xmlns://www.example.com/schema/root" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="1.11" xsi:type="FVDL">
<Level1>
<Level2>
etc
任何人都可以指出我出错的地方:)
由于
答案 0 :(得分:4)
Level2
与Root
和Level1
元素位于同一名称空间中(后代元素继承使用xmlns
属性定义的名称空间,直到重新定义名称空间为止)你需要在两种情况下使用ns +
,即:
doc.Descendants(ns + "Level1").Elements(ns + "Level2"))
答案 1 :(得分:0)
您可以按如下方式获取root的默认命名空间:
var ns = doc.Root.GetDefaultNamespace();