[ad_1]
やあ 、
親ノードなしで xml ノードを選択しようとしていますが、値を取得できません。 誰か助けてください。
私が試したこと:
XmlNodeList nodes = root.SelectNodes("//sdnDetails"); foreach (XmlNode node in nodes) { XmlNode fnamexml = node.SelectSingleNode("firstName"); if(fnamexml != null) { string a = fnamexml.InnerText; } }
xml:
<?xml version="1.0" standalone="yes"?><sdnList xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://tempuri.org/sdnList.xsd"> <publshInformation> <Publish_Date>12/15/2022</Publish_Date> <Record_Count>447</Record_Count></publshInformation> <sdnDetails> <uid>9639</uid> <firstName>Ismail Abdul Salah</firstName> <lastName>HANIYA</lastName> <sdnType>Individual</sdnType> </sdnDetails> </sdnList>
解決策 1
XML ドキュメントのデフォルトの名前空間は "http://tempuri.org/sdnList.xsd"
.
残念ながら、 System.Xml
クラスはデフォルトの名前空間をサポートしていません。 代わりに、 XmlNamespaceManager
デフォルトの名前空間のエイリアスを定義し、それをクエリで使用するには:
C#
XmlNamespaceManager nsmgr = new XmlNamespaceManager(root.OwnerDocument.NameTable); nsmgr.AddNamespace("d", root.NamespaceURI); XmlNodeList nodes = root.SelectNodes("//d:sdnDetails", nsmgr); foreach (XmlNode node in nodes) { XmlNode fnamexml = node.SelectSingleNode("d:firstName", nsmgr); ... }
C#
XNamespace ns = root.Name.Namespace; IEnumerable<XElement> nodes = root.Descendants(ns + "sdnDetails"); foreach (XElement node in nodes) { XElement fnamexml = node.Element(ns + "firstName"); ... }
[ad_2]
コメント