次のサンプル XML を解析しようとしています。
<?xml version="1.0" encoding="UTF-8"?>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<soapenv:Body>
<d2LogicalModel modelBaseVersion="1.0" xmlns="http://datex2.eu/schema/1_0/1_0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://datex2.eu/schema/1_0/1_0 http://datex2.eu/schema/1_0/1_0/DATEXIISchema_1_0_1_0.xsd">
<payloadPublication xsi:type="PredefinedLocationsPublication" lang="en">
<predefinedLocationSet id="GUID-NTCC-VariableMessageSignLocations">
<predefinedLocation id="VMS30082775">
<predefinedLocationName>
<value lang="en">VMS M60/9084B</value>
</predefinedLocationName>
</predefinedLocation>
</predefinedLocationSet>
</payloadPublication>
</d2LogicalModel>
</soapenv:Body>
</soapenv:Envelope>
特に、最上位の definedLocation タグの内容を取得する必要があります。私の計算では、正しい XPath は
/soapenv:Envelope/soapenv:Body/d2LogicalModel/payloadPublication/predefinedLocationSet/predefinedLocation
次の C# コードを使用して XML を解析しています。
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load(filename);
XmlNamespaceManager nsmanager = new XmlNamespaceManager(xmlDoc.NameTable);
nsmanager.AddNamespace("soapenv", "http://schemas.xmlsoap.org/soap/Envelope");
string xpath ="/soapenv:Envelope/soapenv:Body/d2LogicalModel/payloadPublication/predefinedLocationSet/predefinedLocation";
XmlNodeList itemNodes = xmlDoc.SelectNodes(xpath, nsmanager);
しかし、これは結果が出ません。レンガの壁に頭をぶつけているような気がするので、誰でもこれに光を当てることができますか.