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

xmlXML 要素の名前にすることはできません。したがって、XML フラグメントを解析することはできません。次に、そのようなことを試すことができます。

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