gpt4 book ai didi

java - 使用 JDOMXpath 读取 XML

转载 作者:行者123 更新时间:2023-12-02 07:27:07 26 4
gpt4 key购买 nike

我有以下 XML 文件 -

<?xml version="1.0" encoding="UTF-8"?>
<BatchOrders xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<BatchHeader>
<ServiceProvider>123456789</ServiceProvider>
</BatchHeader>
<OrderDetails>
<MessageType>HelloWorld</MessageType>
<IssueDateTime>22/01/2012 00:00:00</IssueDateTime>
<receivedDateTime>22/01/2012 00:00:00</receivedDateTime>
<Status>TestStatus</Status>
</OrderDetails>
</BatchOrders>

我想读入内容并将它们设置为我创建的字段。所以我有下面的代码(没有省略一些 - 我刚刚包含了我认为我需要展示的内容。下面是我创建的一个测试类 - 我还有一个作家作为这个类的一部分,编写了一个正如我所期望的,XML 文件可以很好地写入磁盘。我面临的问题是读取上面的文件并暂时将读取到控制台的内容显示出来。

File        myFileRead = null;
FileReader myFileReader = null;

try {

myFileRead = new File("C:/Path/myfile.xml");
myRecord = new myRecord();
myFileReader = new FileReader(myFileRead);

myXPathReader reader = new myXPathReader(myFileReader);

while (reader.hasNext())
{
record = reader.next();

//prints out then to cosole
}

因此,从上面我有 myRecord 类,其中有 ServiceProvider 等的 getters/setters。然后,我还有一个 myXpathReader 类,它执行以下操作:

    private Document document;
private List batchorders;
private Iterator iterator;

public myXPathReader (Reader myFileReader)
throws Exception
{
SAXBuilder builder = new SAXBuilder();
document = builder.build(myFileReader);

batchorders = new JDOMXPath("//BatchOrders").selectNodes(document);

iterator = batchorders.iterator();
}

public int getSize() { return batchorders.size(); }

public boolean hasNext() { return iterator.hasNext(); }


public myRecord next()
throws Exception {

Element element = (Element) iterator.next();


myRecord record = new myRecord();

record.setServiceProvider((new JDOMXPath("./ServiceProvider").stringValueOf(element)));
//Some more sets ans close class etc...

现在,如果我调试代码,并且在 iterator.next 上的元素之后,我可以看到文件内容已被正确读取。但在我的控制台上,ServiceProvider 值以及实际上所有值都被设置为空字符串“”。为了从 XML 中提取值,我是否在 JDOMXPath 上执行了错误的操作?

最佳答案

在您的示例中,XML ServiceProvider 不是 BatchOrders 的子级,两者之间还有另一个级别 (BatchHeader)。所以你的第二个 XPath 表达式可能应该是

BatchHeader/ServiceProvider

而不是./ServiceProvider

关于java - 使用 JDOMXpath 读取 XML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13400230/

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