Java-清除XML标记并获取属性

Java-清除XML标记并获取属性,java,xml,Java,Xml,我有下一个要分析的XML文件: <?xml version="1.0" encoding="windows-1252"?> <!DOCTYPE colHAREM> <colHAREM versao="Segundo_dourada_com_relacoes_14Abril2010"> <DOC DOCID="H2-dftre765"> <P>A Reforma Religiosa e Política na <EM ID=

我有下一个要分析的XML文件:

<?xml version="1.0" encoding="windows-1252"?>
<!DOCTYPE colHAREM>
<colHAREM versao="Segundo_dourada_com_relacoes_14Abril2010">
<DOC DOCID="H2-dftre765">
<P>A Reforma Religiosa e Política
  na
  <EM ID="H2-dftre765-28" CATEG="LOCAL" TIPO="HUMANO" SUBTIPO="PAIS" COREL="H2-dftre765-37" TIPOREL="incluido">Inglaterra</EM>
</P>
 <P>
<EM ID="H2-dftre765-29" CATEG="PESSOA" TIPO="INDIVIDUAL" COREL="H2-dftre765-28" TIPOREL="natural_de">Henrique VIII</EM>
  O curso da
  <EM ID="H2-dftre765-30" CATEG="ACONTECIMENTO|OBRA" TIPO="EFEMERIDE|PLANO" COREL="H2-dftre765-26" TIPOREL="ident">Reforma</EM>
  foi diferente na
  <EM ID="H2-dftre765-31" CATEG="LOCAL" TIPO="HUMANO" SUBTIPO="PAIS" COREL="H2-dftre765-31" TIPOREL="ident">Inglaterra</EM>
  . Tinha havido desde há muito uma forte corrente anti-clerical, tendo a
  <EM ID="H2-dftre765-32" CATEG="PESSOA|LOCAL" TIPO="POVO|HUMANO" SUBTIPO="|PAIS" COREL="H2-dftre765-28 H2-dftre765-28" TIPOREL="LOCAL**ident**H2-dftre765-28**LOCAL PESSOA**natural_de**H2-dftre765-28**LOCAL">Inglaterra</EM>
  já tido o movimento
  <EM ID="H2-dftre765-33" CATEG="ABSTRACCAO" TIPO="DISCIPLINA" COREL="H2-dftre765-28" TIPOREL="praticado_em">Lollard</EM>
  , que inspirou os
  <EM ID="H2-dftre765-34" CATEG="PESSOA" TIPO="GRUPOMEMBRO">Hussitas</EM>
  na
  <EM ID="H2-dftre765-35" CATEG="LOCAL" TIPO="HUMANO" SUBTIPO="REGIAO" COREL="H2-dftre765-34 H2-dftre765-31" TIPOREL="pratica_se incluido">Boémia</EM>
  . Mas
  <EM ID="H2-dftre765-39" CATEG="TEMPO" TIPO="TEMPO_CALEND" SUBTIPO="DATA" COREL="H2-dftre765-72" TIPOREL="incluido">em cerca de 1520</EM>
  , no entanto, os
  <EM ID="H2-dftre765-40" CATEG="PESSOA" TIPO="GRUPOMEMBRO" COREL="H2-dftre765-33" TIPOREL="praticante_de">Lollards</EM>
  não eram já uma força activa, ou pelo menos um movimento de massas.
</P>
</DOC>
</colHAREM>
我想要像这样的东西:

LOCAL - HUMANO - Inglaterra
PESSOA - INDIVIDUAL - Henrique_VIII
......
TEMPO - TEMPO_CALEND - em_cerca_de_1520
PESSOA - GRUPOMEMBRO - Lollards
我不知道如何获取属性,请注意,我需要将属性与_ 示例:em cerca de 1520应该是em_cerca_de_1520,这是此处标记中的属性


提前谢谢。

这里也有人问过类似的问题:

请将打印对账单更改为以下内容:

System.out.println(el.getAttribute("CATEG")+ " - "+el.getAttribute("TIPO") + " - " + el.getFirstChild().getNodeValue());

我认为您对XML中元素和属性之间的区别有一点误解,双引号中的值是属性值,但是您试图添加的值是元素的文本值(不是属性)。

这里也提出了类似的问题:

请将打印对账单更改为以下内容:

System.out.println(el.getAttribute("CATEG")+ " - "+el.getAttribute("TIPO") + " - " + el.getFirstChild().getNodeValue());

我认为您对XML中元素和属性之间的区别有一点误解,双引号中的值是属性值,但是您试图添加的值是元素的文本值(不是属性)。

您可以这样做:

System.out.println(el.getAttribute("CATEG")+ " - "+el.getAttribute("TIPO")) + " -" +el.getFirstChild().getNodeValue()

你可以这样做:

System.out.println(el.getAttribute("CATEG")+ " - "+el.getAttribute("TIPO")) + " -" +el.getFirstChild().getNodeValue()

谢谢你的帮助。 要将所有空格替换为“u”,请使用:


谢谢你的帮助。 要将所有空格替换为“u”,请使用:


谢谢你的帮助和解释,那真的帮助了我。谢谢你的帮助和解释,那真的帮助了我。
elem= elem.replaceAll("\\s+","_");