gpt4 book ai didi

c# - XmlDocument - 带有命名空间的 SelectSingleNode

转载 作者:太空狗 更新时间:2023-10-30 01:36:19 26 4
gpt4 key购买 nike

这是我的代码:

XmlTextReader reader = new XmlTextReader(xmlPath);
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load(reader);
XmlNode root = xmlDoc.DocumentElement;

XmlNode node = root.SelectSingleNode("marketingid");

有效的 XML:

<confirmsubmit>
<marketingid>-1</marketingid>
</confirmsubmit>

无效的 XML:

<confirmsubmit xmlns="http:....">
<marketingid>-1</marketingid>
</confirmsubmit>

xmlns属性的处理方式是什么,如何解析?

和命名空间有关系吗?

编辑:这是有效的代码:

XmlTextReader reader = new XmlTextReader(xmlPath);
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load(reader);

XmlNamespaceManager nsmgr = new XmlNamespaceManager(xmlDoc.NameTable);
nsmgr.AddNamespace("ns", xmlDoc.DocumentElement.NamespaceURI);

XmlNode book = xmlDoc.SelectSingleNode("/ns:confirmsubmit/ns:marketingid", nsmgr);

所有的 XPath 比看起来要复杂得多,我建议像我这样的初学者阅读:http://www.w3schools.com/xpath/xpath_syntax.asp

最佳答案

您需要在游戏中添加一个XmlNamespaceManager 实例,如本例所示来自documentation :

public class Sample
{
public static void Main()
{

XmlDocument doc = new XmlDocument();
doc.Load("booksort.xml");

//Create an XmlNamespaceManager for resolving namespaces.
XmlNamespaceManager nsmgr = new XmlNamespaceManager(doc.NameTable);
nsmgr.AddNamespace("bk", "urn:samples");

//Select and display the value of all the ISBN attributes.
XmlNodeList nodeList;
XmlElement root = doc.DocumentElement;
nodeList = root.SelectNodes("/bookstore/book/@bk:ISBN", nsmgr);
foreach (XmlNode isbn in nodeList){
Console.WriteLine(isbn.Value);
}

}
}

关于c# - XmlDocument - 带有命名空间的 SelectSingleNode,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22535102/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com