/ / एक्सएमएल विशेषता को अनदेखा करने वाले नामस्थान [डुप्लिकेट] - जावा, xml, xpath

नामस्थान को अनदेखा कर एक्सएमएल विशेषता निकालें [डुप्लिकेट] - जावा, एक्सएमएल, एक्सपैथ

मुझे निकालना पड़ेगा attr ऐसे XML से मूल्य:

<FIXML xmlns="http://www.fixprotocol.org/FIXML-5-0-SP2">
<TAG attr="value">
...
</TAG>
</FIXML>

और ऐसे Java कोड का उपयोग करने का प्रयास करें

XPathExpression expression = XPathExpressionFactory.createXPathExpression("/FIXML/TAG/@attr");
XmlPayloadConverter converter = new DefaultXmlPayloadConverter();
Node node = converter.convertToNode(xmlStr);
Object result = expression.evaluateAsString(node);

दुर्भाग्य से result यहां मूल्य हमेशा खाली होता है। अगर मैं नेमस्पेस अटायर हटा दूं xmlns="http://www.fixprotocol.org/FIXML-5-0-SP2" कोड अपेक्षित रूप में काम करता है (result है value स्ट्रिंग)।

मेरे जावा कोड उदाहरण में नामस्थान की उपेक्षा कैसे करें?

अद्यतन करें: ऐसा लगता है कि मुझे XPath का उपयोग करना है local-name() मेरी अभिव्यक्ति में कार्य करते हैं लेकिन मेरे मामले में व्यावहारिक रूप से इसका उपयोग कैसे करें?

उपाय: मेरे मामले में सही XPath विस्तार है "/*[local-name()="FIXML"]/*[local-name()="TAG"]/@attr"

उत्तर:

जवाब के लिए 0 № 1

कुछ इसी तरह का पोस्ट / उत्तर यहाँ दिया गया था: Xpath का उपयोग करके XML फ़ाइलों में नेमस्पेस कैसे प्राप्त करें

एक विकल्प के बारे में भूलना होगाउस के साथ एक उपसर्ग जोड़ना नाम स्थान, और बस अपना पथ नाम-स्थान मुक्त करें। आप इसके द्वारा कर सकते हैं स्थानीय-नाम () फ़ंक्शन का उपयोग करके जब भी आपको किसी को संदर्भित करने की आवश्यकता होती है तत्व जिसका नामस्थान आप जानते नहीं हैं। उदाहरण के लिए:

//*[local-name() = "Element"]