这是我的XML:
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<feed xml:base="XYZ" xmlns:d="http://schemas/services" xmlns:m="http://schemas/metadata" xmlns="http://www.abc.pqr/Atom">
<title type="text">Title</title>
<id>Id</id>
<updated>2018-02-08</updated>
<link rel="self" title="titl" href="title" />
<entry m:etag="W/"25"">
<id>id1</id>
<title type="text">title_text</title>
<updated>2018-02-08</updated>
<author>
<name />
</author>
<link m:etag=""{acx},25"" rel="edit-media" title="title_value" />
<link rel="edit" title="title" />
<link rel="http://az.com/CreatedBy" type="application/atom+xml;type=entry" title="CreatedBy" href="title/CreatedBy" />
<link rel="http://az.com/ModifiedBy" type="application/atom+xml;type=entry" title="ModifiedBy" href="title/ModifiedBy" />
<link rel="http://az.com/CheckedOutTo" type="application/atom+xml;type=entry" title="CheckedOutTo" href="title/CheckedOutTo" />
<category term="xyz" scheme="xyz" />
<content type="application/octetstream" src="http://collb.xlsm" />
<m:properties xmlns:m="http://xyz/metadata" xmlns:d="wsx/dataservices">
<d:ContentTypeID>contentId</d:ContentTypeID>
<d:Dept>21</d:Dept>
<d:Class>0</d:Class>
<d:Id m:type="Edm.Int32">2121</d:Id>
</m:properties>
</entry>
<link rel="next" href="http://tyu.com" />
</feed>
我想阅读与<d:Id m:type>
和<entry m:etag>
对应的值,即输出应为2121
和25
。
我应该如何阅读这些内容。
P.S:我在stackoverflow上遇到了类似的问题,但没有任何对我有用。
我的部分代码:
DocumentBuilderFactory builderFactory = DocumentBuilderFactory.newInstance();
builderFactory.setNamespaceAware(true);
DocumentBuilder documentBuilder = documentBuilder = builderFactory.newDocumentBuilder();
Document doc = documentBuilder.parse(connection.getInputStream());
Element element = doc.getDocumentElement();
element.getAttributeNodeNS("http://schemas/metadata", "type");
答案 0 :(得分:0)
您还没有说过您正在使用哪种Java API。我猜这可能意味着你正在使用DOM。我不知道为什么有更好的替代方案仍有人使用DOM,但他们确实如此。
无论您使用哪种API,您都会发现可能存在类似
的方法element.getAttributeValue(namespace, localname)
要阅读m:type
属性,请使用
element.getAttributeValue("http://schemas/metadata", "type")