.NET 3.5并不完全支持XPATH 2.0或XSLT 2.0,这太糟糕了.有谁知道这两个将在未来的.NET版本中被包含和完全支持吗?
我正在将字符串加载到包含以下结构的XML文档:
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<Compile Include="clsWorker.cs" />
</ItemGroup>
</Project>
Run Code Online (Sandbox Code Playgroud)
然后我将所有加载到xmldocument:
XmlDocument xmldoc = new XmlDocument();
xmldoc.LoadXml(Xml);
Run Code Online (Sandbox Code Playgroud)
然后出现以下问题:
XmlNode Node = xmldoc.SelectSingleNode("//Compile"); // return null
Run Code Online (Sandbox Code Playgroud)
当我从根元素(Project)中删除xmlns属性时,它的工作正常,如何改进我的SelectSingleNode以返回相关元素?
我相信这个问题可能以前曾在 2006 年在不同的网站上尝试过。但是,我当前的 XML/RDF 编写器 ( XML::LibXML1.70) 以 xmlns 属性的形式输出元素名称空间。这将排除使用非命名空间感知解析器的人,他们只对foaf:Person. 我想知道是否有人知道在 perl 中实现这一目标的简单方法,首先是使用XML::LibXML. 或者通过不同的方式。
像这样的节点:
<Person xmlns="http://xmlns.com/foaf/0.1/" rdf:ID="me"/>
Run Code Online (Sandbox Code Playgroud)
和这个:
<name xmlns="http://xmlns.com/foaf/0.1/">Evan Carroll</name>
Run Code Online (Sandbox Code Playgroud)
应该看起来像:
<foaf:Person rdf:ID="me"/>
<foaf:name>Evan Carroll</name>
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?我相信无论哪种方式在技术上都是正确的,但我宁愿不依赖其他人知道这一点。昨天我自己也不知道。