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/
中查看其他示例
我有读取 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/
中查看其他示例