这会通过标签名称“c”获取元素吗? ?在我的程序中它不起作用?

发布于 2025-01-04 09:33:19 字数 895 浏览 0 评论 0原文

<a>
    <b>
        <c type="lol">
            <d>1</d>
            <f>2</f>
        </c>
        <c type="lol">
            <d>2</d>
            <f>2</f>
        </c>
        <c type="h">
            <d>v</d>
            <f>d</f>
        </c>
    </b>
</a>
DocumentBuilderFactory dBFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder dB = dBFactory.newDocumentBuilder();
Document doc = dB.parse(url);     
System.out.println("Root element :" + doc.getDocumentElement().getNodeName());

NodeList list = doc.getElementsByTagName("b").item(0).getChildNodes();

我可以说

doc.getElementsByTagName("c").item(0).getchildnode() ;

这会通过标签名称“c”获取元素吗?在我的程序中它不起作用。有人可以帮忙吗?

<a>
    <b>
        <c type="lol">
            <d>1</d>
            <f>2</f>
        </c>
        <c type="lol">
            <d>2</d>
            <f>2</f>
        </c>
        <c type="h">
            <d>v</d>
            <f>d</f>
        </c>
    </b>
</a>
DocumentBuilderFactory dBFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder dB = dBFactory.newDocumentBuilder();
Document doc = dB.parse(url);     
System.out.println("Root element :" + doc.getDocumentElement().getNodeName());

NodeList list = doc.getElementsByTagName("b").item(0).getChildNodes();

Can I say

doc.getElementsByTagName("c").item(0).getchildnode() ;

Will this get the element by tag name "c"? In my program it is not working. Can someone help?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

牵强ㄟ 2025-01-11 09:33:19

我可以说吗

doc.getElementsByTagName("c").item(0).getchildnode() ;

这是一个简短的 XPath 表达式,它选择 XML 文档中第一个 c 元素的子元素:

(//c)[1]/*

基于 XSLT 的验证:

<xsl:stylesheet version="1.0"
 xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
 <xsl:output omit-xml-declaration="yes" indent="yes"/>
 <xsl:strip-space elements="*"/>

 <xsl:template match="/">
     <xsl:copy-of select="(//c)[1]/*"/>
 </xsl:template>
</xsl:stylesheet>

当此转换应用于提供的 XML 文档时

<a>
    <b>
        <c type="lol">
            <d>1</d>
            <f>2</f>
        </c>
        <c type="lol">
            <d>2</d>
            <f>2</f>
        </c>
        <c type="h">
            <d>v</d>
            <f>d</f>
        </c>
    </b>
</a>

我们得到了想要的正确结果——计算 XPath 表达式并将所选节点复制到输出

<d>1</d>
<f>2</f>

Can I say

doc.getElementsByTagName("c").item(0).getchildnode() ;

Here is a short and simple XPath expression that selects the child elements of the first c element in an XML document:

(//c)[1]/*

XSLT - based verification:

<xsl:stylesheet version="1.0"
 xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
 <xsl:output omit-xml-declaration="yes" indent="yes"/>
 <xsl:strip-space elements="*"/>

 <xsl:template match="/">
     <xsl:copy-of select="(//c)[1]/*"/>
 </xsl:template>
</xsl:stylesheet>

When this transformation is applied on the provided XML document:

<a>
    <b>
        <c type="lol">
            <d>1</d>
            <f>2</f>
        </c>
        <c type="lol">
            <d>2</d>
            <f>2</f>
        </c>
        <c type="h">
            <d>v</d>
            <f>d</f>
        </c>
    </b>
</a>

we get the wanted, correct result -- the XPath expression is evaluated and the selected nodes are copied to the output:

<d>1</d>
<f>2</f>
黯然 2025-01-11 09:33:19

当您

NodeList nl = doc.getElementsByTagName("c").item(0).getchildnodes();

这样做时,您将拥有包含以下元素的节点列表:(

<d>1</d>
<f>2</f>

文档中第一个 元素的子节点)

When you do

NodeList nl = doc.getElementsByTagName("c").item(0).getchildnodes();

then you have node list that contains the elements:

<d>1</d>
<f>2</f>

(the child nodes of the first <c> element in your document)

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文