C# 获取XML节点的属性值(使用名称空间)
这是XML文件C# 获取XML节点的属性值(使用名称空间),c#,xml,linq-to-xml,C#,Xml,Linq To Xml,这是XML文件 <?xml version="1.0" encoding="UTF-8"?> <container version="1.0" xmlns="urn:oasis:names:tc:opendocument:xmlns:container"> <rootfiles> <rootfile media-type="application/oebps-package+xml" full-path="EPUB/wasteland.opf"/>
<?xml version="1.0" encoding="UTF-8"?>
<container version="1.0" xmlns="urn:oasis:names:tc:opendocument:xmlns:container">
<rootfiles>
<rootfile media-type="application/oebps-package+xml" full-path="EPUB/wasteland.opf"/>
</rootfiles>
</container>
文本块应更改为“EPUB/wasteland.opf”,但为什么不更改?您缺少名称空间:
var xdoc = XDocument.Load(containerXml.Stream);
XNamespace ns = "urn:oasis:names:tc:opendocument:xmlns:container";
var path = xdoc.Descendants(ns + "rootfile")
.Select(r => (string)r.Attribute("full-path"))
.FirstOrDefault();
您可以为文本块指定路径:
tbl.Text = path;
您缺少命名空间:
var xdoc = XDocument.Load(containerXml.Stream);
XNamespace ns = "urn:oasis:names:tc:opendocument:xmlns:container";
var path = xdoc.Descendants(ns + "rootfile")
.Select(r => (string)r.Attribute("full-path"))
.FirstOrDefault();
您可以为文本块指定路径:
tbl.Text = path;
您知道您正在循环中分配文本吗?这意味着只有最后一个值可以知道,但只有一个值。它应该是那个,不是吗?只需使用
SingleOrDefault()
的FirstOrDefault()
方法获取单个值就可以了哦,非常感谢,我没有注意到名称空间,这个问题花了我一天的时间,你知道你在循环中分配文本吗?这意味着只有最后一个值可以知道,但只有一个值。它应该是那个,不是吗?只需使用SingleOrDefault()
的FirstOrDefault()
方法获取单个值就可以了。哦,它很有效,非常感谢,我没有注意到名称空间,这个问题花了我一天的时间