Java 从XML文件中拆分字符串的步骤

Java 从XML文件中拆分字符串的步骤,java,xml,Java,Xml,我正在阅读一个xml文件,其中包含一个类的许多对象的属性;我使用的是DOM xml解析器;在这个类中还有一个数组字段(NEARBOXID),所以我想知道从xml文件中像单个字符串一样读取它然后拆分它的内容是一种好方法,还是有更好的方法 文件如下所示: <CONFIGURATION> <CONFIG> <BOXID>1</BOXID> <LENGTH>100</LENGTH> <NEARBOX

我正在阅读一个xml文件,其中包含一个类的许多对象的属性;我使用的是DOM xml解析器;在这个类中还有一个数组字段(NEARBOXID),所以我想知道从xml文件中像单个字符串一样读取它然后拆分它的内容是一种好方法,还是有更好的方法

文件如下所示:

<CONFIGURATION>
<CONFIG> 
    <BOXID>1</BOXID> 
    <LENGTH>100</LENGTH>
    <NEARBOXID>2,3,4,5</NEARBOXID>
</CONFIG>
    <CONFIG> 
    <BOXID>2</BOXID> 
    <LENGTH>200</LENGTH>
    <NEARBOXID>1,8</NEARBOXID>
</CONFIG>

1.
100
2,3,4,5
2.
200
1,8

您应该读取为字符串并将其拆分。使用循环将数字转换为整数使用
ParseInt

您应该读取为字符串并将其拆分。使用循环将数字转换为整数使用
ParseInt

否,由您分割该字段。该方法可以很好地完成任务。

不,由您来分割该字段。该方法很好。

您需要使用提取所需标记内的完整数据,然后使用,以从完整字符串中获取所需值。

您需要使用提取所需标记内的完整数据,然后使用,从整个字符串中获取所需的值。

我认为这是一个选择问题。您可以这样使用它:

<NEARBOXID>2,3,4,5</NEARBOXID>
2,3,4,5
或者你这样使用它:

<NEARBOXID>2</NEARBOXID>
<NEARBOXID>3</NEARBOXID>
<NEARBOXID>4</NEARBOXID>
<NEARBOXID>5</NEARBOXID>
2
3.
4.
5.

第二种方法要求您使用与第一种不同的解析代码,但您可以在拆分和处理字符串时保存一些代码。

我认为这是一个选择问题。您可以这样使用它:

<NEARBOXID>2,3,4,5</NEARBOXID>
2,3,4,5
或者你这样使用它:

<NEARBOXID>2</NEARBOXID>
<NEARBOXID>3</NEARBOXID>
<NEARBOXID>4</NEARBOXID>
<NEARBOXID>5</NEARBOXID>
2
3.
4.
5.

第二种方法要求您拥有与第一种不同的解析代码,但您可以保存一些关于拆分和处理字符串的代码。

将数据提取为字符串并对其执行split()

更好的方法是在单个标记中维护,如

<NEARBOXID>2</NEARBOXID>
<NEARBOXID>3</NEARBOXID>
<NEARBOXID>4</NEARBOXID>
<NEARBOXID>5</NEARBOXID>
2
3.
4.
5.

要解析xml查询,可以根据需要使用XPath、XQuery或JAXB。

将数据提取为字符串并对其执行split()

更好的方法是在单个标记中维护,如

<NEARBOXID>2</NEARBOXID>
<NEARBOXID>3</NEARBOXID>
<NEARBOXID>4</NEARBOXID>
<NEARBOXID>5</NEARBOXID>
2
3.
4.
5.

为了解析xml查询,您可以根据需要使用XPath、XQuery或JAXB。

因为您正在将xml转换为Java对象,所以我将演示如何使用实现来完成这项工作。从JavaSE6开始,JDK/JRE中包含了JAXB实现

我建议将
NEARBOXID
元素的内容更改为空格分隔

<NEARBOXID>2 3 4 5</NEARBOXID>
配置

下面的对象将映射到XML文档的根

import java.util.List;
import javax.xml.bind.annotation.*;

@XmlRootElement(name="CONFIGURATION")
@XmlAccessorType(XmlAccessType.FIELD)
public class Configuration {

    @XmlElement(name="CONFIG")
    private List<Config> configs;

}
input.xml/Output

下面是运行演示代码的输入和输出

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<CONFIGURATION>
    <CONFIG>
        <BOXID>1</BOXID>
        <LENGTH>100</LENGTH>
        <NEARBOXID>2 3 4 5</NEARBOXID>
    </CONFIG>
    <CONFIG>
        <BOXID>2</BOXID>
        <LENGTH>200</LENGTH>
        <NEARBOXID>1 8</NEARBOXID>
    </CONFIG>
</CONFIGURATION>

1.
100
2 3 4 5
2.
200
1 8

既然您正在将XML转换为Java对象,我将演示如何使用一个实现来实现这一点。从JavaSE6开始,JDK/JRE中包含了JAXB实现

我建议将
NEARBOXID
元素的内容更改为空格分隔

<NEARBOXID>2 3 4 5</NEARBOXID>
配置

下面的对象将映射到XML文档的根

import java.util.List;
import javax.xml.bind.annotation.*;

@XmlRootElement(name="CONFIGURATION")
@XmlAccessorType(XmlAccessType.FIELD)
public class Configuration {

    @XmlElement(name="CONFIG")
    private List<Config> configs;

}
input.xml/Output

下面是运行演示代码的输入和输出

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<CONFIGURATION>
    <CONFIG>
        <BOXID>1</BOXID>
        <LENGTH>100</LENGTH>
        <NEARBOXID>2 3 4 5</NEARBOXID>
    </CONFIG>
    <CONFIG>
        <BOXID>2</BOXID>
        <LENGTH>200</LENGTH>
        <NEARBOXID>1 8</NEARBOXID>
    </CONFIG>
</CONFIGURATION>

1.
100
2 3 4 5
2.
200
1 8

好的,谢谢!这是我第一次使用xml,所以我想写我所知道的最好的代码,谢谢!这是我第一次使用xml,所以我想写我所知道的最好的代码,谢谢!这是我第一次使用xml,所以我想写我所知道的最好的代码,谢谢!这是我使用xml的第一种方法,因此我想用JAXB编写我能写的最好的代码。您还可以使用
@xmlsist
注释处理空间分隔值:使用JAXB,您还可以使用
@xmlsist
注释处理空间分隔值: