无法使用命名空间读取 xml
本文关键字:读取 xml 命名空间 | 更新日期: 2023-09-27 18:30:33
当根目录中没有命名空间时,我可以使用 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
谁能指出我们哪里出了问题:)
谢谢
Level2
与Root
和 Level1
元素位于同一命名空间中(后代元素继承使用 xmlns
属性定义的命名空间,直到重新定义命名空间),因此您需要在这两种情况下都使用 ns +
,即:
doc.Descendants(ns + "Level1").Elements(ns + "Level2"))
您可以获取根的默认命名空间,如下所示:
var ns = doc.Root.GetDefaultNamespace();