Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/368.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,然后使用SAX解析器将父标记的值链接到子标记_Java_Xml Parsing - Fatal编程技术网

Java 解析具有相同父子标记的XML,然后使用SAX解析器将父标记的值链接到子标记

Java 解析具有相同父子标记的XML,然后使用SAX解析器将父标记的值链接到子标记,java,xml-parsing,Java,Xml Parsing,我想解析具有相同父子标记的XML,然后使用SAX解析器将父标记的值链接到子标记 这是XML文件 在本例中,名为AVP的标记具有同名AVP的子标记。我想获取属性名的值,然后将父级的值与子级的值关联起来。我用 SAX解析器,但我无法区分父标记和子标记,但没有区分父标记和子标记 Java代码是 public void startElement(字符串s、字符串s1、字符串elementName、属性)引发异常 { if(elementName.equalsIgnoreCase(“AVP”)) {

我想解析具有相同父子标记的XML,然后使用SAX解析器将父标记的值链接到子标记

这是XML文件


在本例中,名为
AVP
的标记具有同名
AVP
的子标记。我想获取属性名的值,然后将父级的值与子级的值关联起来。我用 SAX解析器,但我无法区分父标记和子标记,但没有区分父标记和子标记

Java代码是

public void startElement(字符串s、字符串s1、字符串elementName、属性)引发异常
{
if(elementName.equalsIgnoreCase(“AVP”))
{
AVP_Tmp=新的AVP();
字符串nameValue=attributes.getValue(“名称”);
如果(nameValue==null)
{
nameValue=attributes.getValue(“值”);
}
如果(nameValue!=null)
{
AVP_Tmp.set(名称值、元素名称、属性);
}
}
}
@凌驾
公共void endElement(字符串s、字符串s1、字符串元素)引发SAXException
{
if(元素等于(“AVP”))
{
对象键=AVP_Tmp.Tmp值;
对象值=AVP_Tmp.Tmp值;
AVPL.put(键、值);
}
}
AVP\u Tmp
是一个类,其设置方法如下:

public void set(字符串nameValue、字符串qName、属性attrs)/,int k)
{
int len=attrs.getLength();
tmpValue=qName+“-->”+nameValue;
列表=新的ArrayList();
对于(int i=0;i
我目前的输出为:

节点Id
..
..
订阅Id
订阅Id类型
国际监测系统信息
事件类型
SIP方法
..
我希望输出的格式如下:

节点Id
..
..
..
订阅Id#订阅Id类型
IMS信息#事件类型#SIP方法
..

当我正确实现了您的目标时,我会这样做,即您构建“AVP结构”,然后提取所需的输出

因此,当一个新的AVP启动时,它会像这样(只是在伪代码中):


解析之后,您就得到了层次结构,并根据需要构建结构/结果。

成员父级就是AVP,它是XML中的“父级”。构造函数允许您设置一个。解析后,您就拥有了对象形式的XML结构。您能否在startElement中包含代码时,对其进行更详细的阐述?。
if (parent == null){
   avpTemp = new AVP();
   parent = avpTemp;
} else {avpTemp = new AVP(parent); }