JAVA 阅读 XML,直接来自元素

JAVA reading XML, direct from element

我有读取 XML 文件的程序。最近我的供应商更改了源 XML 文件的某些部分,我不知道如何阅读更改的部分。

XML :

<Product>
<Weight>5,000</Weight>
<Color>blue</Color>
<Stock Warehouse_name="London" Availability="5,00"/>
<Stock Warehouse_name="Berlin" Availability="0,00"/>
<Stock Warehouse_name="Sydney" Availability="42,00"/>
</Product>

也许你已经看到我的问题了。重量和颜色都可以,但库存是我的问题。取而代之的是在元素之间给出信息,信息直接在元素中。我正在使用标准方法检索数据:

color = (eElement.getElementsByTagName("Color").item(0).getTextContent());

有什么建议吗?我是 Java 的新手,所以请尽可能简单地向我解释一下。

您要检索的值称为 attributes。 您可以使用 getAttribute on Element 检索属性值。

下面的代码应该同样适用:

NodeList stockList = eElement.getElementsByTagName("Stock");
for ( int i = 0; i < stockList.getLength(); i++ )
{
   Node stockNode = stockList.item(i);
   if ( stockNode.getNodeType() == Node.ELEMENT_NODE )
   {
       Element stockElement = (Element)stockNode;
       System.out.println( "Warehouse name : " + stockElement.getAttribute( "Warehouse_name" ) );
       System.out.println( "Availability : " + stockElement.getAttribute( "Availability" ) );
    }
}

您需要获取Stock节点并转换为Element,才能获取您想要的属性。

final DocumentBuilder dBuilder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
// textoXml contains your xml file
final Document doc = dBuilder.parse(new ByteArrayInputStream(textoXml.getBytes()));
// Here you gat the Stock node you want and cast to Element
final Element eStock = (Element) doc.getElementsByTagName("Stock").item(0);
final String warehouseName = eStock.getAttribute("Warehouse_name");

您可以在 https://www.mkyong.com/java/how-to-read-xml-file-in-java-dom-parser/

中查看其他示例