gpt4 book ai didi

java - 使用 java 删除 XML 标记内的空格

转载 作者:行者123 更新时间:2023-11-29 08:07:19 28 4
gpt4 key购买 nike

我正在获取带有以下标签的 XML。我所做的是,使用 Sax 解析器用 Java 读取 XML 文件并将它们保存到数据库中。但似乎在 p 标签之后有空格,如下所示。

     <Inclusions><![CDATA[<p>                                               </p><ul> <li>Small group walking tour</li> <li>Entrance fees</li> <li>Professional guide </li> <li>Guaranteed to skip the long lines</li> <li>Headsets to hear the guide clearly</li> </ul>
<p></p>]]></Inclusions>

但是当我们将读取的字符串插入数据库(PostgreSQL 8)时,它会为这些空格打印如下所示的错误字符。

\011\011\011\011\011\011\011\011\011\011\011\011

  • Small group walking tour
  • Entrance fees
  • Professional guide
  • Guaranteed to skip the long lines
  • Headsets to hear the guide clearly
\012\011\011\011\011\011

  1. 我想知道为什么会这样打印坏字符 (011\011)?

  2. 使用 java 删除 XML 标记内空格的最佳方法是什么? (或者如何防止那些不良字符。)

我已经检查过样本,其中大部分是用 python 样本。

这是在我的程序中使用 SAX 读取 XML 的方式,

方法一

  // ResultHandler is the class that used to read the XML. 
ResultHandler handler = new ResultHandler();
// Use the default parser
SAXParserFactory factory = SAXParserFactory.newInstance();
// Retrieve the XML file
FileInputStream in = new FileInputStream(new File(inputFile)); // input file is XML.
// Parse the XML input
SAXParser saxParser = factory.newSAXParser();
saxParser.parse( in , handler);

这就是 ResultHandler 类使用 Method-1 读取 XML 作为 Sax 解析器的方式

import org.apache.log4j.Logger;
import org.xml.sax.Attributes;
import org.xml.sax.InputSource;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.DefaultHandler;

// other imports

class ResultHandler extends DefaultHandler {

public void startDocument ()
{
logger.debug("Start document");
}

public void endDocument ()
{
logger.debug("End document");
}

public void startElement(String namespaceURI, String localName, String qName, Attributes attribs)
throws SAXException {
strValue = "";
// add logic with start of tag.
}

public void characters(char[] ch, int start, int length)
throws SAXException {
//logger.debug("characters");
strValue += new String(ch, start, length);
//logger.debug("strValue-->"+strValue);
}

public void endElement(String namespaceURI, String localName, String qName)
throws SAXException {
// add logic to end of tag.
}
}

所以需要知道如何设置 setIgnoringElementContentWhitespace(true) 或类似的 sax 解析器。

最佳答案

您可以尝试为您的DocumentBuilderFactory设置

setIgnoringElementContentWhitespace(true)

因为这个:

Due to reliance on the content model this setting requires the parser to be in validating mode

你还需要设置

setValidating(true)

或者 str= str.replaceAll("\\s+", ""); 也可以工作

关于java - 使用 java 删除 XML 标记内的空格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10276812/

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