Java 如何获取具有不同属性的XML标记的值?
我需要从具有不同属性的XML标记中获取值 例如: XMLJava 如何获取具有不同属性的XML标记的值?,java,xml,dom,attributes,Java,Xml,Dom,Attributes,我需要从具有不同属性的XML标记中获取值 例如: XML 邮递 /贷款/测试?testArg=1234&;id=555 HTTP/1.1 本地主机:7002 0 铬-extension://fhbjgbiflinjbdggehcddcbncdddomop 这里我需要获得一个带有属性“HTTP Method”的标记“parameter”的值 还有一个属性为“HTTP-URI” 这就是我所做的: NodeList nodeList = document.getElementsByTagNa
邮递
/贷款/测试?testArg=1234&;id=555
HTTP/1.1
本地主机:7002
0
铬-extension://fhbjgbiflinjbdggehcddcbncdddomop
这里我需要获得一个带有属性“HTTP Method”的标记“parameter”的值
还有一个属性为“HTTP-URI”
这就是我所做的:
NodeList nodeList = document.getElementsByTagName("parameter");
for (int i = 0, size = nodeList.getLength(); i < size; i++) {
Element elem = (Element) nodeList.item(i);
NodeList NodeList=document.getElementsByTagName(“参数”);
for(int i=0,size=nodeList.getLength();i
这里我得到了所有的参数标签。我怎样才能得到具体的一个呢?这段代码
for (int i = 0; i < nodeList.getLength(); i++) {
Element elem = (Element) nodeList.item(i);
String attribute = elem.getAttribute("name");
if ("HTTP-Method".equals(attribute) || "HTTP-URI".equals(attribute)) {
System.out.println(elem.getTextContent());
}
}
这段代码
for (int i = 0; i < nodeList.getLength(); i++) {
Element elem = (Element) nodeList.item(i);
String attribute = elem.getAttribute("name");
if ("HTTP-Method".equals(attribute) || "HTTP-URI".equals(attribute)) {
System.out.println(elem.getTextContent());
}
}
您可以使用GitHub上提供的Scilca XML Progression包
List<Node> list = document.getElementsWithAttribute(new Attribute("Name", "HTTP-URI", true); // True cause the value of the attribute should be same
Node need = list.get(0);
List List=document.getElementsWithAttribute(新属性(“Name”,“HTTP-URI”,true);//true因为属性的值应该相同
节点需要=list.get(0);
您可以使用GitHub提供的Scilca XML Progression软件包
List<Node> list = document.getElementsWithAttribute(new Attribute("Name", "HTTP-URI", true); // True cause the value of the attribute should be same
Node need = list.get(0);
List List=document.getElementsWithAttribute(新属性(“Name”,“HTTP-URI”,true);//true因为属性的值应该相同
节点需要=list.get(0);
使用库和Java 8,这可以非常直接地完成。使用Streams和Lambda,我们可以以相当自然的方式浏览xml
XmlDynamic example = new XmlDynamic("<metaData>" +
"<parameter name=\"HTTP-Method\">POST</parameter>" +
"<parameter name=\"HTTP-URI\">/loan/test?testArg=1234&id=5555555</parameter>" +
"</metaData>");
String uri = example.get("metaData")
.children()
.filter(parameter -> parameter.get("@name").asString().equals("HTTP-URI"))
.findAny()
.map(parameter -> parameter.asString())
.get(); // assuming this value is always there
XmlDynamic示例=新的XmlDynamic(“”)+
“职位”+
“/loan/test?testArg=1234&;id=555”+
"");
字符串uri=example.get(“元数据”)
.儿童()
.filter(parameter->parameter.get(“@name”).asString().equals(“HTTP-URI”))
.findAny()
.map(参数->参数.asString())
.get();//假设此值始终存在
或者,如果xml不能保证达到我们期望的效果,那么可能会有一点防御性
Optional<String> uri = example.get("metaData")
.children()
.filter(param -> param.get("@name").maybe().asString().orElse("").equals("HTTP-URI"))
.findAny()
.map(param -> param.asString());
可选uri=example.get(“元数据”)
.儿童()
.filter(param->param.get(“@name”).maybe().asString().orElse(“”.equals(“HTTP-URI”))
.findAny()
.map(param->param.asString());
您可以使用将库添加到maven项目中
<dependency>
<groupId>com.github.alexheretic</groupId>
<artifactId>dynamics</artifactId>
<version>2.3</version>
</dependency>
com.github.alexheritic
动力学
2.3
使用库和Java 8,这可以非常直接地完成。使用Streams和Lambda,我们可以以相当自然的方式浏览xml
XmlDynamic example = new XmlDynamic("<metaData>" +
"<parameter name=\"HTTP-Method\">POST</parameter>" +
"<parameter name=\"HTTP-URI\">/loan/test?testArg=1234&id=5555555</parameter>" +
"</metaData>");
String uri = example.get("metaData")
.children()
.filter(parameter -> parameter.get("@name").asString().equals("HTTP-URI"))
.findAny()
.map(parameter -> parameter.asString())
.get(); // assuming this value is always there
XmlDynamic示例=新的XmlDynamic(“”)+
“职位”+
“/loan/test?testArg=1234&;id=555”+
"");
字符串uri=example.get(“元数据”)
.儿童()
.filter(parameter->parameter.get(“@name”).asString().equals(“HTTP-URI”))
.findAny()
.map(参数->参数.asString())
.get();//假设此值始终存在
或者,如果xml不能保证达到我们期望的效果,那么可能会有一点防御性
Optional<String> uri = example.get("metaData")
.children()
.filter(param -> param.get("@name").maybe().asString().orElse("").equals("HTTP-URI"))
.findAny()
.map(param -> param.asString());
可选uri=example.get(“元数据”)
.儿童()
.filter(param->param.get(“@name”).maybe().asString().orElse(“”.equals(“HTTP-URI”))
.findAny()
.map(param->param.asString());
您可以使用将库添加到maven项目中
<dependency>
<groupId>com.github.alexheretic</groupId>
<artifactId>dynamics</artifactId>
<version>2.3</version>
</dependency>
com.github.alexheritic
动力学
2.3
在问这个问题之前,你看了吗?在问这个问题之前,你看了吗?