gpt4 book ai didi

java - 如何将 XML 文件中的 x 和 y 坐标解析为 Java 中的 Point2D 数组?

转载 作者:行者123 更新时间:2023-12-02 08:40:38 25 4
gpt4 key购买 nike

我目前面临的问题是,我想将 XML 中的 x 和 y 坐标输入 Java,但我不确定如何将各个坐标对(x 和 y)连接到点以及以何种形式连接我应该存储它们的数组吗?点数没有预定义,所以我想我应该使用 ArrayList?。此外,坐标有时也可以是整数(不像下面的例子)。我的问题是如何将直接读取数组包含到解析 XML 文件中。下面是我尝试过的一些第一个代码片段..

XML 文件如下所示:

<?xml version="1.0" encoding="UTF-8" standalone="no"?><Room><ID>Test</ID><corners><corner><x>400.3</x><y>997.2</y></corner><corner><x>400.3</x><y>833.1</y></corner><corner><x>509.9</x><y>833.1</y></corner><corner><x>509.9</x><y>700.0</y></corner>...<corner><x>1012.1</x><y>500.8</y></corner><corner><x>1012.1</x><y>900.2</y></corner><corner><x>902.0</x><y>900.2</y></corner><corner><x>902.0</x><y>997.2</y></corner></corners></Room>

我的 XMLParser 类如下所示:

package parser;

import data.Room;
import parser.exc.XMLTransfererException;

import org.jdom2.Document;
import org.jdom2.Element;
import org.jdom2.JDOMException;
import org.jdom2.filter.ElementFilter;
import org.jdom2.input.SAXBuilder;
import org.jdom2.input.sax.XMLReaders
import org.jdom2.util.IteratorIterable;

import java.io.IOException;
import java.nio.file.Path;
import java.nio.file.Paths;


public class XMLTransferer implements IXMLTransferer {

final String dtdName = "DataModel.dtd";
final String dtdPath = "../File_Processing_Component/Model";
final String dtdFilename = String.format("%s/%s", dtdPath, dtdName);

final String xmlDoctypeRootElementName ="Raum";
boolean isValid;

SAXBuilder builder = new SAXBuilder(XMLReaders.NONVALIDATING);
Document doc = builder.build(new File(xmlFilename));

doc.setDocType(new DocType(xmlDoctypeRootElementName, dtdFilename));
String xmlString = new XMLOutputter().outputString(doc);

SAXBuilder validationBuilder = new SAXBuilder(XMLReaders.DTDVALIDATING);

@Override
public Room readFromFile(String dtdPath)
throws XMLTransfererException {
try (doc = validationBuilder.build(new StringReader(xmlString));)
isValid = true;
} catch (JDOMException jdEx) {
// ...
isValid = false;
}
if (isValid)
try { IteratorIterable<Element> iter = root.getDescendants(new ElementFilter("corner"));
while (iter.hasNext()) {
Element elem = iter.next();
Element childX = elem.getChild("x");
array.getPoints().add(Double.parseDouble(childX.getText()));
Element childY = elem.getChild("y");
array.getPoints().add(Double.parseDouble(childY.getText()));
}
}
catch (IOException | JDOMException x) {
x.printStackTrace();
}
System.out.println(array);
}
}

正如您所认为的,这远远不够完整,但是在搜索答案时,我找不到正确管理此问题的方法。非常感谢帮助!

最佳答案

尝试以下解决方案,

声明二维数组列表如下,

List<List<Double>> listCoordinate = new ArrayList<List<Double>>();

将坐标值(x 和 y)作为列表添加到 listCooperative 中,

listCoordinate.add(Arrays.asList(Double.parseDouble(childX.getText()), Double.parseDouble(childY.getText()));

关于java - 如何将 XML 文件中的 x 和 y 坐标解析为 Java 中的 Point2D 数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61410657/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com