0

C# 経由で XML ドキュメントを SQL-DB にインポートする必要があります。XML にはいくつかの名前空間があります。

XPath経由でインポートしたい特定の要素に対処しようとしましたが、名前空間が原因で壊れました。それ以外の

XmlDocument doc = new XmlDocument();
doc = XDocument.Load(Filename);
GENERATOR_INFO = doc.SelectSingleNode("ORDER/ORDER_HEADER/ORDER_INFO/GENERATOR_INFO").InnerText;

私はこのようなものを書きます:

XmlDocument doc = new XmlDocument();
doc = XDocument.Load(Filename);
XmlNamespaceManager nsmgr = new XmlNamespaceManager(doc.NameTable);
nsmgr.AddNamespace("openTrans", "http://www.opentrans.org/XMLSchema/2.1");
GENERATOR_INFO = doc.SelectSingleNode("//openTrans:GENERATOR_INFO", nsmgr).InnerText;

したがって、値が必要な要素への「パス」を短縮します。

私の質問は次のとおりです。要素を直接アドレス指定するにはどうすればよいですか? XML には、「ORDER_ID」と呼ばれる 2 つの要素があります。

ORDER/ORDER_HEADER/ORDER_INFO/ORDER_ID

ORDER/ORDER_HEADER/CUSTOMER_ORDER_REFERENCE/ORDER_INFO

上記の構文を使用すると、1 つの要素しか取得できません。ループ/Linq を使用すると、両方の値を取得できますが、どちらがどちらであるかはわかりません。名前空間にもかかわらず、一意の XPath によって要素をアドレス指定するオプションはありますか?

よろしく

イェンス

4

1 に答える 1

0

見つかりました:) XPathのすべての「ステップ」を参照する必要があります: ORDER_ID = doc.SelectSingleNode("//openTrans:ORDER_INFO/openTrans:ORDER‌ _ID", nsmgr).InnerText; それぞれ VIND_ORDER_ID = COR.SelectSingleNode("//openTrans:CUSTOMER_ORDER_REFERENCE/o‌ penTrans:ORDER_ID", nsmgr).InnerText

于 2016-08-31T14:09:58.237 に答える