0
我这里有一个XML文档:的LINQ to XML如何获得子元素的值与多个命名空间
<?xml version="1.0" encoding="utf=8"?>
<package xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<metadata xmlns="http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd">
<id>NugetName</id>
<version>1.0.0</version>
<authors>company</authors>
<owners>company</owners>
</metadata>
<files>
...
</files>
</package>
我试图让“ID”的值。我目前正在使用XDocument,并且尝试了几种不同的方法来解决这个问题。
我想肯定我可以使用以下方法:
XDocument xmlDoc = XDocument.Load(file);
XNamespace xns = "http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd";
XElement el = xmlDoc.Element(xns + "metadata");
XElement id = el.Element(xns + "id");
string idValue = id.Value;
Console.WriteLine(idValue);
不过,我得到错误:未将对象引用设置到对象的实例。 我不知道Element如何可以为null。我是否也需要声明项目命名空间?我试过了,我仍然得到对象引用错误。有人能指出我犯的新手错误吗?
你能放在xmlDoc中,变量断点和跟踪它通过看是否XML文件已被装入正确更换?我无法看到文件参数已经初始化的位置,所以很难知道文档本身是否为空 –
试图找出我的调试器出了什么问题,但同时我将xml文档放入字符串文本中并使用XDocument传递它像这样做; 'XDocument xmlDoc = XDocument.Parse(str);'我得到同样的错误。 – JPAnderson
听起来像你的文档是空的 –