我使用C#。请考虑以下XML:
<item>
<title>lorem</title>
<description>ipsum</description>
<media:category>Sports</media:category>
<media:title>Combo</media:title>
<media:thumbnail url='http://dolor/0.jpg' height='100' width='200'/>
<media:thumbnail url='http://sit/0.jpg' height='300' width='400'/>
</item>
我希望能够检索具有命名空间的所有元素的List,例如。 media
。
XML被加载到XElement
。我可以通过名称找到使用Linq的元素,例如。 thumbnail
,但不是命名空间。
这并不总是有效的XML,因为并不总是声明xmlns
命名空间。它以这种方式加载到XElement:
XElement _root = XDocument.Parse(xmlString).Root;
答案 0 :(得分:0)
您可以尝试使用此XPath表达式选择特定命名空间中的所有元素:
//*[namespace-uri()='http://uri-address-here']
例如在C#中:
var xml = @"<item xmlns:media='http://www.foo.org/'>
<title>lorem</title>
<description>ipsum</description>
<media:category>Sports</media:category>
<media:title>Combo</media:title>
<media:thumbnail url='http://dolor/0.jpg' height='100' width='200'/>
<media:thumbnail url='http://sit/0.jpg' height='300' width='400'/>
</item>";
var element = XElement.Parse(xml);
var elements = element.XPathSelectElements("//*[namespace-uri()='http://www.foo.org/']");