0

我想解析一个XML其标签包含&例如:<xml><OC&C>12.4</OC&C></xml>。我试图逃到&&amp;但这并没有解决标签名称的问题(它只修复了值),目前我的代码正在抛出异常,请参阅下面的完整函数。

public static void main(String[] args) throws Exception
{
  String xmlString        = "<xml><OC&C>12.4</OC&C></xml>";
  xmlString = xmlString.replaceAll("&", "&amp;");
  String path             = "xml";
  InputSource inputSource = new InputSource(new StringReader(xmlString));
  try
  {
    Document xmlDocument            = DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(inputSource);
    XPath xPath                     = XPathFactory.newInstance().newXPath();
    XPathExpression xPathExpression = xPath.compile(path);

    System.out.println("Compiled Successfully.");
  }
  catch (SAXException e)
  {
    System.out.println("Error while retrieving node Path:" + path + " from " + xmlString + ". Returning null");
  }
}
4

3 回答 3

2

嗯...我不认为这是一个合法的 XML 名称。我会考虑先使用正则表达式将 OC&C 替换为合法的东西,然后再解析它。

于 2013-01-29T15:14:59.667 回答
1

它不是“XML”。这是一个非 XML。XML 不允许在名称中使用与号。因此,您无法使用 XML 解析器成功解析它。

于 2013-01-29T16:14:53.807 回答
0

xml不能是任何 XML 元素的名称。因此,您的 XML 片段无论如何都无法解析。然后你可以尝试类似的东西。

<name><![CDATA[<OC&C>12.4</OC&C>]]></name>
于 2013-01-29T15:13:33.677 回答