如何创建一个区域? 导入java.io.File; 导入java.io.IOException; 导入java.util.List; 导入org.jdom.Document; 导入org.jdom.Element; 导入org.jdom.JDOMException; 导入org.jdom.input.SAXBuilder; 公共类ReadXMLFile{ 公共静态void main(字符串[]args){ SAXBuilder=新SAXBuilder(); File xmlFile=新文件(“c:\\test.xml”); 试一试{ documentdocument=(Document)builder.build(xmlFile); Element rootNode=document.getRootElement(); List=rootNode.getChildren(“raum”); 对于(int i=0;i

如何创建一个区域? 导入java.io.File; 导入java.io.IOException; 导入java.util.List; 导入org.jdom.Document; 导入org.jdom.Element; 导入org.jdom.JDOMException; 导入org.jdom.input.SAXBuilder; 公共类ReadXMLFile{ 公共静态void main(字符串[]args){ SAXBuilder=新SAXBuilder(); File xmlFile=新文件(“c:\\test.xml”); 试一试{ documentdocument=(Document)builder.build(xmlFile); Element rootNode=document.getRootElement(); List=rootNode.getChildren(“raum”); 对于(int i=0;i,java,Java,} 我不明白为了将导入的坐标插入多边形,中间的步骤必须是什么样子。。也许有人能帮我 您可以按照任何示例JDOM解析器示例进行操作。 例如,解释了如何读取xml并将数据放入列表中并对其进行迭代。只需遵循这些步骤并理解您正在做的事情,您就可以轻松地完成它。您可以按照任何示例JDOM解析器示例进行操作。 例如,解释了如何读取xml并将数据放入列表中并对其进行迭代。只需按照步骤进行操作并理解您正在做的事情,就可以轻松完成。您可以阅读XML文件DOM解析器库检查文章 我假设您正在使用桌面应用程序,因此您可

}


我不明白为了将导入的坐标插入多边形,中间的步骤必须是什么样子。。也许有人能帮我

您可以按照任何示例JDOM解析器示例进行操作。
例如,解释了如何读取xml并将数据放入列表中并对其进行迭代。只需遵循这些步骤并理解您正在做的事情,您就可以轻松地完成它。

您可以按照任何示例JDOM解析器示例进行操作。
例如,解释了如何读取xml并将数据放入列表中并对其进行迭代。只需按照步骤进行操作并理解您正在做的事情,就可以轻松完成。

您可以阅读XML文件DOM解析器库检查文章

我假设您正在使用桌面应用程序,因此您可能希望使用FileChooser进行文件选择。这是一个例子

此外,我认为您需要对XML文件进行一些结构更改(为了方便起见),以便它具有如下内容:

import java.io.File;
import java.io.IOException;
import java.util.List;
import org.jdom.Document;
import org.jdom.Element;
import org.jdom.JDOMException;
import org.jdom.input.SAXBuilder;

public class ReadXMLFile {
public static void main(String[] args) {

  SAXBuilder builder = new SAXBuilder();
  File xmlFile = new File("c:\\test.xml");

  try {

    Document document = (Document) builder.build(xmlFile);
    Element rootNode = document.getRootElement();
    List list = rootNode.getChildren("raum");

    for (int i = 0; i < list.size(); i++) {

       Element node = (Element) list.get(i);

       System.out.println("ID : " + node.getChildText("ID"));

    }

  } catch (IOException io) {
    System.out.println(io.getMessage());
  } catch (JDOMException jdomex) {
    System.out.println(jdomex.getMessage());
  }
}

5.
...
5.
...
但是对于现有的结构来说,这样做是不够的:

<xpoints>
 <x>5<x/>
...
</xpoints>
<ypoints>
 <y>5<y/>
...
</ypoints>
File File=新文件(“文件”);
DocumentBuilderFactory dbf=DocumentBuilderFactory.newInstance();
DocumentBuilder db=dbf.newDocumentBuilder();
文档doc=db.parse(文件);
doc.getDocumentElement().normalize();
NodeList NodeList=doc.getElementsByTagName(“边缘”);
//可以迭代所有边
对于(int-itr=0;itr
您可以阅读XML文件DOM解析器库检查文章

我假设您正在使用桌面应用程序,因此您可能希望使用FileChooser进行文件选择。这是一个例子

此外,我认为您需要对XML文件进行一些结构更改(为了方便起见),以便它具有如下内容:

import java.io.File;
import java.io.IOException;
import java.util.List;
import org.jdom.Document;
import org.jdom.Element;
import org.jdom.JDOMException;
import org.jdom.input.SAXBuilder;

public class ReadXMLFile {
public static void main(String[] args) {

  SAXBuilder builder = new SAXBuilder();
  File xmlFile = new File("c:\\test.xml");

  try {

    Document document = (Document) builder.build(xmlFile);
    Element rootNode = document.getRootElement();
    List list = rootNode.getChildren("raum");

    for (int i = 0; i < list.size(); i++) {

       Element node = (Element) list.get(i);

       System.out.println("ID : " + node.getChildText("ID"));

    }

  } catch (IOException io) {
    System.out.println(io.getMessage());
  } catch (JDOMException jdomex) {
    System.out.println(jdomex.getMessage());
  }
}

5.
...
5.
...
但是对于现有的结构来说,这样做是不够的:

<xpoints>
 <x>5<x/>
...
</xpoints>
<ypoints>
 <y>5<y/>
...
</ypoints>
File File=新文件(“文件”);
DocumentBuilderFactory dbf=DocumentBuilderFactory.newInstance();
DocumentBuilder db=dbf.newDocumentBuilder();
文档doc=db.parse(文件);
doc.getDocumentElement().normalize();
NodeList NodeList=doc.getElementsByTagName(“边缘”);
//可以迭代所有边
对于(int-itr=0;itr
为了完整起见?
这是如何使用SAX解析器实现的。
请注意,从您的问题中,我不清楚您指的是哪个
Polygon
。我认为这是一个java类。这不可能,因为它的点都是
int
,而示例XML文件只包含
双值。我唯一想到的另一个类是,它包含一个点数组,其中每个点都是一个
double
。因此,在下面的代码中,我创建了一个
javafx.scene.shape.Polygon
的实例

对于您在问题中描述的情况,我不认为将整个DOM树加载到内存中有什么意义(没有双关语)。您只需在每次遇到XML文件中的x和y坐标时创建一个点,并将这些坐标添加到点集合中

这是代码。请注意,我创建了一个名为polygon0.XML的XML文件,其中包含您的问题中的整个XML。还要注意,您可以扩展类而不是实现接口
ContentHandler

导入java.io.FileReader;
导入java.io.IOException;
导入java.nio.file.Path;
导入java.nio.file.path;
导入javax.xml.parsers.parserConfiguration异常;
导入javax.xml.parsers.SAXParser;
导入javax.xml.parsers.SAXParserFactory;
导入org.xml.sax.Attributes;
导入org.xml.sax.ContentHandler;
导入org.xml.sax.InputSource;
导入org.xml.sax.Locator;
导入org.xml.sax.SAXException;
导入org.xml.sax.XMLReader;
导入javafx.scene.shape.Polygon;
公共类实现ContentHandler{
私有布尔isX;
私有布尔isY;
私有多边形;
/*启动“ContentHandler”接口方法*/
@重写//org.xml.sax.ContentHandler
公共无效setDocumentLocator(定位器定位器){
//什么也不做。
}
@重写//org.xml.sax.ContentHandler
public void startDocument()引发异常{
多边形=新多边形();
}
@重写//org.xml.sax.ContentHandler
public void endDocument()引发异常{
//什么也不做。
}
@重写//org.xml.sax.ContentHandler
公共无效StartRef