2013-11-15 2 views
2

мне нужно разобрать XML теги, которые закомментированные какСинтаксический XML комментарии с DOM

<DataType Name="SecureCode" Size="4" Type="NVARCHAR"> 
    <!-- <Validation> 
      <Regex JavaPattern="^[0-9]*$" JSPattern="^[0-9]*$"/> 
    </Validation> --> 
    <UIType Size="4" UITableSize="4"/> 
</DataType> 

Но я нашел setIgnoringComments(boolean)

Document doc = docBuilder.parse(new File(PathChecker.getDataTypesFile())); 
docFactory.setIgnoringComments(true); // ture or false, no difference 

Но это, похоже, не изменится ничего. Есть ли другой способ разобрать комментарии? Я должен использовать DOM.

С уважением

+0

Возможная Дубликат: http://stackoverflow.com/questions/12069509/how-to-read-comments-from-xml-file -using-dom-parser –

+1

Я тоже нашел этот пост. Это никоим образом не помогает мне. – Michael

+0

Похоже, что setIgnoringComments() имеет ошибку, о чем сообщается, но за все эти годы не было исправлено: https://issues.apache.org/jira/browse/XERCESJ-37 –

ответ

5

Метод «setIgnoringComments» удаляет комментарии из дерева DOM во время разбора. С "setIgnoringComments (ложных)" вы можете получить текст комментария как:

NodeList nl = doc.getDocumentElement().getChildNodes(); 
    for (int i = 0; i < nl.getLength(); i++) { 
     if (nl.item(i).getNodeType() == Element.COMMENT_NODE) { 
      Comment comment=(Comment) nl.item(i); 
      System.out.println(comment.getData()); 
     } 
    } 
+0

О, это круто. Не пробовал, но это должно решить. благодаря – Michael

0

Поскольку кажется, не существует «правильный путь» решения проблемы, я только что удалили комментарии.

BufferedReader br = new BufferedReader(new FileReader(new File(PathChecker.getDataTypesFile()))); 
BufferedWriter bw = new BufferedWriter(new FileWriter(new File(PathChecker.getDataTypesFileWithoutComments()))); 

String line = ""; 

while ((line = br.readLine()) != null) { 
    line = line.replace("<!--", "").replace("-->", "") + "\n"; 
    bw.write(line); 
} 
Смежные вопросы