Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/312.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何获取具有不同属性的XML标记的值?_Java_Xml_Dom_Attributes - Fatal编程技术网

Java 如何获取具有不同属性的XML标记的值?

Java 如何获取具有不同属性的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

我需要从具有不同属性的XML标记中获取值

例如: XML


邮递
/贷款/测试?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&amp;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&amp;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
在问这个问题之前,你看了吗?在问这个问题之前,你看了吗?