gpt4 book ai didi

java - 使用 SAX XML 解析器的问题

转载 作者:行者123 更新时间:2023-11-29 06:09:53 24 4
gpt4 key购买 nike

我正在使用 SAX 解析器进行 XML 解析。问题出在以下 XML 代码上:

<description>
Designer:Paul Smith Color:Plain Black Fabric/Composition:100% cotton Weave/Pattern:pinpoint Sleeve:Long-sleeved Fit:Classic Front style:Placket front Back style:Side pleat back Collar:Classic/straight collar Button:Pearlescent front button Pocket:rounded chest pocket Hem:Rounded hem
</description>

我明白了:

Designer:Paul Smith
Color:Plain Black

其他部分都不见了。其他几行也会发生同样的事情。谁能告诉我我的方法有什么问题吗?

我的代码如下:

解析器代码:

try {
/** Handling XML */
SAXParserFactory spf = SAXParserFactory.newInstance();
SAXParser sp = spf.newSAXParser();
XMLReader xr = sp.getXMLReader();

/** Send URL to parse XML Tags */
URL sourceUrl = new URL(
"http://50.19.125.224/Demo/VeryGoodSex_and_the_City_S6E6.xml");

/** Create handler to handle XML Tags ( extends DefaultHandler ) */
MyXMLHandler myXMLHandler = new MyXMLHandler();
xr.setContentHandler((ContentHandler) myXMLHandler);
xr.parse(new InputSource(sourceUrl.openStream()));

} catch (Exception e) {
System.out.println("XML Pasing Excpetion = " + e);
}

保存 XML 解析信息的对象:

public class ParserObject {

String name=null;
String description=null;
String bitly=null; //single
String productLink=null;//single
String productPrice=null;//single
Vector<String> price=new Vector<String>();
}

处理程序类:

public void endElement(String uri, String localName, String qName)
throws SAXException {


currentElement = false;


if (qName.equalsIgnoreCase("title"))
{
xmlDataObject[index].name=currentValue;
}

else if (qName.equalsIgnoreCase("artist"))
{
xmlDataObject[index].artist=currentValue;
}

}


public void startElement(String uri, String localName, String qName,
Attributes attributes) throws SAXException {


currentElement = true;

if (qName.equalsIgnoreCase("allinfo"))
{
System.out.println("started");
}

else if (qName.equalsIgnoreCase("tags"))
{
insideTag=1;
}

}

public void characters(char[] ch, int start, int length)
throws SAXException {

if (currentElement) {
currentValue = new String(ch, start, length);
currentElement = false;
}

}

最佳答案

您必须连接解析器提供给您的字符,直到它调用 endElement

尝试从 characters 处理程序中删除 currentElement = false;,然后

currentValue = currentValue + new String(ch, start, length);

用空字符串初始化 currentValue 或处理上述表达式中的 null 值。

关于java - 使用 SAX XML 解析器的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7301084/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com