Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/364.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在xml中解析xml_Java_Xml_Xml Parsing - Fatal编程技术网

Java 在xml中解析xml

Java 在xml中解析xml,java,xml,xml-parsing,Java,Xml,Xml Parsing,我有以下问题。我在XML中有一个XML。见示例: <?xml version="1.0" encoding="UTF-8" standalone="no" ?> <!DOCTYPE ..."><AIDEM><OSERVER>xxx</OSERVER> <OBJECT SystemID = "111" ObjectID = "00000004009e8bc1" Docu = "some value" DirectoryID = "1

我有以下问题。我在XML中有一个XML。见示例:

<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
<!DOCTYPE ..."><AIDEM><OSERVER>xxx</OSERVER>
<OBJECT SystemID = "111" ObjectID = "00000004009e8bc1" Docu = "some value" DirectoryID = "111" InternalType = "1" TemplateID = "1234" TemplateType = "6" TemplateName = "String">
<OHEADER><OFIELD FieldID = "1" FieldType = "3" FieldName = "string" IsEmpty = "no"><ODATETIME>11111</ODATETIME></OFIELD>
<OFIELD FieldID = "123" FieldType = "3" FieldName = "string" IsEmpty = "no"><ODATETIME>11111</ODATETIME></OFIELD>
<OFIELD FieldID = "124" FieldType = "1" FieldName = "string" IsEmpty =  "no"><TEST_STRING>&lt;mos&gt;
&lt;ID&gt;some.some.some&lt;/ID&gt;
&lt;sID&gt;some.some&lt;/sID&gt;
&lt;mID&gt;53570320&lt;/mID&gt;
&lt;mObj&gt;
&lt;oID&gt;cl178317481&lt;/oID&gt;
....
</TEST_STRING></OFIELD>
}


在我的示例中,所有内容都在一个字符串中,但我不知道如何正确处理内部XML。老实说,格式有点让我恼火。这样做并将内部XML打包成新XML的好方法是什么?提前感谢。

您可以使用任何解析器将外部文档解析为DOM,就像您已经做的那样

然后遍历DOM,获取所有节点值并再次尝试用XML解析它们。成功后,您可以保存文档内部XML,从DOM中删除该节点,并将其保存到外部而不使用嵌套XML

最后,使用transformer呈现文档,就像您已经做的那样


为了提高效率,您可以尝试解析TextNodes,但我不确定这99%是否只影响文本节点或属性。

您是否尝试使用JAXB或任何其他框架解析xml?谢谢您的评论@Smile我编辑了我的问题。小尼特:xml中没有xml,您有一个编码字符串作为其中一个节点的文本。因此,获取该节点的内容,取消转义,并处理生成的有效XML字符串。谢谢@DaveNewton您的回答,这对我帮助很大。使用StringEscapeUtils解决了问题。
public static void main(String[] args) throws ParserConfigurationException, SAXException, IOException, TransformerException  {

    File file = new File("example.xml");

    DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
    DocumentBuilder db = dbf.newDocumentBuilder();
    Document document = db.parse(file);

    DOMSource domSource = new DOMSource(document);
    StringWriter writer = new StringWriter();
    StreamResult result = new StreamResult(writer);
    TransformerFactory tf = TransformerFactory.newInstance();
    Transformer transformer = tf.newTransformer();
    transformer.transform(domSource, result);
    String mystring = writer.toString();
    System.out.println("String XML: \n" + mystring);

}