c# - XPath expression for xml with a namespace prefix -
निम्न xml को देखते हुए:
& lt; ns0: MCCI_IN000002UV01 xmlns: ns0 = "कलश : HL7-संगठन: v3 "& gt; & Lt; ns0: id रूट = "2.16.840.1.113883.3.277.100.1" एक्सटेंशन = "68423f2b-397a-4de4-8b8d-ea1f6c174954" / & gt; & LT; ns0: creationTime & gt; 201,410,171,106-0,700 & lt; / ns0: creationTime & gt; & Lt; ns0: versionCode कोड = "बलोट 200009" /> & Lt; ns0: इंटरेक्शनआईडी रूट = "2.16.840.1.113883.1.6" एक्सटेंशन = "एमसीसीआईआईएसआईएसआईडीआईएडीएएमटीए 2यूवी 01" / & gt; & Lt; ns0: processingCode कोड = "P" / & gt; & Lt; ns0: प्रसंस्करण मोडोड कोड = "टी" / & gt; & Lt; ns0: रिसीवर nullFlavor = "NA" & gt; & Lt; ns0: उपकरण nullFlavor = "NA" classCode = "DEV" निर्धारक कोड = "INSTANCE" & gt; & Lt; ns0: id nullFlavor = "NA" / & gt; & Lt; / ns0: डिवाइस & gt; & Lt; / ns0: रिसीवर & gt; & Lt; ns0: प्रेषक nullFlavor = "NA" & gt; & Lt; ns0: उपकरण nullFlavor = "NA" classCode = "DEV" निर्धारक कोड = "INSTANCE" & gt; & Lt; ns0: id nullFlavor = "NA" / & gt; & Lt; / ns0: डिवाइस & gt; & Lt; / ns0: इस & gt; & Lt; ns0: स्वीकृति प्रकार कोड = "सीए" & gt; & LT; ns0: targetMessage & gt; & Lt; ns0: id रूट = "2.16.840.1.113883.3.277.100.1" एक्सटेंशन = "adb32b05-bf62-4417-8c62-d37a65380c4f" / & gt; & Lt; / ns0: targetMessage & gt; & Lt; ns0: स्वीकृति डेलट टाइप कोड = "I" / & gt; & Lt; / ns0: पावती & gt; & Lt; / ns0: MCCI_IN000002UV01 & gt;
मैं hl7: MCCI_IN000002UV01 / hl7: versionCode / @ कोड विशेषता को BizTalks XPathMutatorStream वर्ग का उपयोग करने में असमर्थ था जब तक कि मैंने XML को बदल दिया और नामस्थान उपसर्ग को हटा दिया। उदाहरण के लिए, एक्सएमएल अब इस तरह दिखता है:
& lt; MCCI_IN000002UV01 xmlns = "कलर: एचएल 7-ओआरजी: वी 3" & gt; & Lt; id रूट = "2.16.840.1.113883.3.277.100.1" एक्सटेंशन = "68423f2b-397a-4de4-8b8d-ea1f6c174954" / & gt; ... & lt; / MCCI_IN000002UV01 & gt;
दुर्भाग्य से मैं XML को बदल नहीं सकता, इसलिए मुझे एनएस0 उपसर्ग से निपटना होगा।
असल में, मैं इसे एक स्ट्रीम पास करके एक XMLReader ऑब्जेक्ट बनाता है:
XmlReader xr = XmlReader.Create (strMyStream);
फिर मैं एक XPathExpression के साथ अपना XPathCollection बना रहा हूँ:
XPathCollection xc = नया XPathCollection (); X। नामस्थान प्रबंधक = नया XmlNamespaceManager (xr.NameTable); X। नामस्थान प्रबंधक। एड-नेमस्पेस ("एचएल 7", "कलर: एचएल 7-ओआरजी: वी 3"); X.एड (नया एक्सपाथ एक्सपे्रेशन ("एचएल 7: एमसीसीआईआईसीआईडीएंडटी 2000 यूवी 01 / एचएल 7: वर्जन कोड / @ कोड"));
मैं अपने XPathCollection और XmlReader उदाहरणों को एक BizTalk XPathMutatorStream ऑब्जेक्ट पास करता हूं:
XPathMutatorStream str = new XPathMutatorStream (xr, xc, ...);
यह सब ठीक काम करता है अगर xml पर कोई नेमस्पेस उपसर्ग नहीं होता है, लेकिन जैसे ही वहाँ होता है, मुझे कभी भी कोई मेल नहीं मिलती। क्या कोई ऐसा नाम है जो मुझे नेमस्पेस मैनेजर पर करना है, या वास्तविक एक्सपेथ स्टेटमेंट में कोई मैच पाने के लिए?
उदाहरण के लिए: // * [स्थानीय-नाम () = 'एमसीआईआईआईएसआईएनआईएडीएएमएएमटी 2यूवी 01'] / * [स्थानीय-नाम () = 'संस्करण कोड' ] / @ कोड
Comments
Post a Comment