我有一个包含处理指令的XML文档。我知道,使用XmlDocument
类,您可以使用
var node = xmlDoc.SelectSingleNode("processing-instruction('xml-stylesheet')") as XmlProcessingInstruction;
但我想使用XDocument
。我怎么能这样做?
答案 0 :(得分:1)
这是我使用XDocument
类访问XML文件节点的方法
但是,您必须更加具体地了解您想要用它做什么。
XDocument doc = XDocument.Load("filepath");
var node = doc.Nodes().OfType<XElement>().SingleOrDefault(n => n.Name == "node name");
var node_value = node.Value;
var node_descendants = node.Descendants();
更新:
您可能已经注意到XDocument中没有 SelectSingleNode ,实际上,要检索您想要的节点,您必须从相应的可相关集合中获取它,或者或者来自预定义的 FirstNode , NextNode , PreviousNode , LastNode ,但您无法对这些过滤器应用任何过滤器。因此,检索ProcessingInstruction节点的唯一方法是
var pI_nodes = doc.Nodes().OfType<XProcessingInstruction>();
和
var pI_nodes = (from node in doc.Nodes()
where node.NodeType == System.Xml.XmlNodeType.ProcessingInstruction
select node);
如果您希望检索多个 ProcessingInstructions 并且还需要过滤这些节点名称,则目标属性< / p>
var filtered_pIs = pI_nodes_1.Where(pI => pI.Target == "xml-stylesheet");
最后提醒一下,处理指令的值存储在数据属性中。
string pI_value = filtered_pIs.First().Data
答案 1 :(得分:0)
这是一种方式:
var node = xDoc.Root.Nodes().OfType<XProcessingInstruction>().First();