「Java XPath」の版間の差分
ナビゲーションに移動
検索に移動
(ページの作成:「http://www.atmarkit.co.jp/fxml/ddd/ddd001/ddd001-namespaces1.html XMLを返すurlからXMLデータを取得、解析し、Nodeのリストを作成する。 URLConne…」) |
|||
(同じ利用者による、間の1版が非表示) | |||
1行目: | 1行目: | ||
http://www.atmarkit.co.jp/fxml/ddd/ddd001/ddd001-namespaces1.html | http://www.atmarkit.co.jp/fxml/ddd/ddd001/ddd001-namespaces1.html | ||
− | + | [[XML]]を返すurlから[[XML]]データを取得、解析し、Nodeのリストを作成する。 | |
− | + | U[[R]]LConnection conn = (new U[[R]]L(url)).openConnection(); | |
conn.connect(); | conn.connect(); | ||
− | InputSource in = new InputSource(new | + | InputSource in = new InputSource(new InputStream[[R]]eader(conn.getInputStream())); |
− | + | [[XPath]]Factory xfactory = [[XPath]]Factory.newInstance(); | |
− | XPath xpath = xfactory. | + | [[XPath]] xpath = xfactory.new[[XPath]](); |
NodeList result = (NodeList)xpath.evaluate("//*[local-name()='Parameter']/text()", in, XPathConstants.NODESET); | NodeList result = (NodeList)xpath.evaluate("//*[local-name()='Parameter']/text()", in, XPathConstants.NODESET); | ||
− | for (int i=0; i | + | for (int i=0; i<result.getLength(); i++) { |
System.out.println(result.item(i).toString()); | System.out.println(result.item(i).toString()); | ||
} | } | ||
25行目: | 25行目: | ||
import java.util.Set; | import java.util.Set; | ||
− | import javax.xml. | + | import javax.xml.[[XML]]Constants; |
import javax.xml.namespace.NamespaceContext; | import javax.xml.namespace.NamespaceContext; | ||
public class NameSpaceContextImpl implements NamespaceContext { | public class NameSpaceContextImpl implements NamespaceContext { | ||
− | Map | + | Map<String, String> map = new HashMap<String, String>(); |
public NameSpaceContextImpl() { | public NameSpaceContextImpl() { | ||
− | setNamespaceURI( | + | setNamespaceURI([[XML]]Constants.DEFAULT_NS_PREFIX, [[XML]]Constants.NULL_NS_URI); |
− | setNamespaceURI( | + | setNamespaceURI([[XML]]Constants.[[XML]]_NS_PREFIX, [[XML]]Constants.[[XML]]_NS_URI); |
− | setNamespaceURI( | + | setNamespaceURI([[XML]]Constants.[[XML]]NS_ATTRIBUTE, [[XML]]Constants.[[XML]]NS_ATTRIBUTE_NS_URI); |
} | } | ||
− | public void | + | public void setNamespaceU[[R]]I(String prefix, String uri) { |
map.put(prefix, uri); | map.put(prefix, uri); | ||
} | } | ||
− | public String | + | public String getNamespaceU[[R]]I(String prefix) { |
return map.get(prefix); | return map.get(prefix); | ||
} | } | ||
− | public String getPrefix(String | + | public String getPrefix(String namespaceU[[R]]I) { |
− | if ( | + | if (namespaceU[[R]]I == null) { |
throw new IllegalArgumentException(); | throw new IllegalArgumentException(); | ||
} | } | ||
− | Set | + | Set<Map.Entry<String, String>>set = map.entrySet(); |
− | for (Map.Entry | + | for (Map.Entry<String, String>item : set) { |
− | if ( | + | if (namespaceU[[R]]I.equals(item.getValue())) { |
return item.getKey(); | return item.getKey(); | ||
} | } | ||
} | } | ||
− | return | + | return [[XML]]Constants.NULL_NS_URI; |
} | } | ||
− | public Iterator getPrefixes(String | + | public Iterator getPrefixes(String namespaceU[[R]]I) { |
− | Set | + | Set<String> prefixes = new HashSet<String>(); |
− | Set | + | Set<Map.Entry<String, String>>set = map.entrySet(); |
− | for (Map.Entry | + | for (Map.Entry<String, String>item : set) { |
− | if ( | + | if (namespaceU[[R]]I.equals(item.getValue())) { |
prefixes.add(item.getKey()); | prefixes.add(item.getKey()); | ||
} | } |
2020年2月16日 (日) 04:27時点における最新版
http://www.atmarkit.co.jp/fxml/ddd/ddd001/ddd001-namespaces1.html XMLを返すurlからXMLデータを取得、解析し、Nodeのリストを作成する。
URLConnection conn = (new URL(url)).openConnection(); conn.connect(); InputSource in = new InputSource(new InputStreamReader(conn.getInputStream())); XPathFactory xfactory = XPathFactory.newInstance(); XPath xpath = xfactory.newXPath(); NodeList result = (NodeList)xpath.evaluate("//*[local-name()='Parameter']/text()", in, XPathConstants.NODESET); for (int i=0; i<result.getLength(); i++) { System.out.println(result.item(i).toString()); }
package generate; import java.util.Collections; import java.util.HashMap; import java.util.HashSet; import java.util.Iterator; import java.util.Map; import java.util.Set; import javax.xml.XMLConstants; import javax.xml.namespace.NamespaceContext; public class NameSpaceContextImpl implements NamespaceContext { Map<String, String> map = new HashMap<String, String>(); public NameSpaceContextImpl() { setNamespaceURI(XMLConstants.DEFAULT_NS_PREFIX, XMLConstants.NULL_NS_URI); setNamespaceURI(XMLConstants.XML_NS_PREFIX, XMLConstants.XML_NS_URI); setNamespaceURI(XMLConstants.XMLNS_ATTRIBUTE, XMLConstants.XMLNS_ATTRIBUTE_NS_URI); } public void setNamespaceURI(String prefix, String uri) { map.put(prefix, uri); } public String getNamespaceURI(String prefix) { return map.get(prefix); } public String getPrefix(String namespaceURI) { if (namespaceURI == null) { throw new IllegalArgumentException(); } Set<Map.Entry<String, String>>set = map.entrySet(); for (Map.Entry<String, String>item : set) { if (namespaceURI.equals(item.getValue())) { return item.getKey(); } } return XMLConstants.NULL_NS_URI; } public Iterator getPrefixes(String namespaceURI) { Set<String> prefixes = new HashSet<String>(); Set<Map.Entry<String, String>>set = map.entrySet(); for (Map.Entry<String, String>item : set) { if (namespaceURI.equals(item.getValue())) { prefixes.add(item.getKey()); } } return Collections.unmodifiableCollection(prefixes).iterator(); } }
© 2006 矢木浩人