XPath를 사용하여 특성 가져오기
주어진 XML 구조는 다음과 같습니다.
<?xml version="1.0" encoding="ISO-8859-1"?>
<bookstore>
<book>
<title lang="eng">Harry Potter</title>
<price>29.99</price>
</book>
<book>
<title lang="eng">Learning XML</title>
<price>39.95</price>
</book>
</bookstore>
어떻게 하면 가치를 얻을 수 있을까요?lang
(어디에lang
가eng
책 제목에서), 첫 번째 요소에 대해?
첫 번째 요소에 대한 lang(책 제목에서 lang=eng)의 값을 얻으려면 어떻게 해야 합니까?
용도:
/*/book[1]/title/@lang
이것은 다음을 의미합니다.
선택합니다.lang
첫번째의 자식인 제목 요소의 속성book
XML 문서의 최상위 요소의 자식입니다.
이 특성의 문자열 값만 가져오려면 표준 XPath 함수를 사용합니다.
string(/*/book[1]/title/@lang)
감사합니다! 이것으로 디브 내부의 데이터 속성과 관련된 비슷한 문제가 해결되었습니다.
<div id="prop_sample" data-want="data I want">data I do not want</div>
다음 xpath 사용://*[@id="prop_sample"]/@data-want
이것이 다른 사람에게 도움이 되기를 바랍니다!
xPath 패턴 아래에서 시도할 수 있습니다.
XPathExpression expr = xPath.compile("/bookstore/book/title[@lang='eng']")
XPath를 이용하여 속성 값을 추출하는 표준 공식은
elementXPath/@attributeName
여기 첫번째 속성의 lang 값을 가져오는 xpath가 있습니다.
//title[text()='Harry Potter']/@lang
PS: 제목 태그가 하나 더 들어오면 변경될 수 있기 때문에 XPath에서 인덱스를 사용하는 것은 절대 권장되지 않습니다.
다음을 사용할 수 있습니다.
(//@lang)[1]
이는 이름이 "lang"인 모든 속성 노드를 얻고 첫 번째 속성 노드를 얻는다는 것을 의미합니다.
Postgre를 사용하는 경우SQL, 이게 맞는 방법입니다.이는 북테이블 제목 및 가격 열에 데이터가 입력되어 있는 경우를 가정한 것입니다.질문은 이렇습니다.
SELECT xpath('/bookstore/book/title/@lang', xmlforest(book.title AS title, book.price AS price), ARRAY[ARRAY[]::TEXT[]]) FROM book LIMIT 1;
다음으로도 받을 수 있습니다.
string(//bookstore/book[1]/title/@lang)
string(//bookstore/book[2]/title/@lang)
비록 당신이 자바스크립트와 함께 XMLDOM을 사용한다면 당신은 다음과 같은 것을 코딩할 수 있습니다.
var n1 = uXmlDoc.selectSingleNode("//bookstore/book[1]/title/@lang");
그리고.n1.text
당신에게 가치를 줄 것입니다."eng"
XPath와 VTD-XML을 사용하여 "lang" 속성 값을 가져오는 것에 대한 토막글입니다.
import com.ximpleware.*;
public class getAttrVal {
public static void main(String s[]) throws VTDException{
VTDGen vg = new VTDGen();
if (!vg.parseFile("input.xml", false)){
return ;
}
VTDNav vn = vg.getNav();
AutoPilot ap = new AutoPilot(vn);
ap.selectXPath("/bookstore/book/title/@lang");
System.out.println(" lang's value is ===>"+ap.evalXPathToString());
}
}
언급URL : https://stackoverflow.com/questions/4531995/getting-attribute-using-xpath
'programing' 카테고리의 다른 글
C/C++에서 (식이) 진행되는 동안 세미콜론이 필요한 이유는 무엇입니까? (0) | 2023.10.22 |
---|---|
Chrome 브라우저로 재생되지 않는 MP4 HEVC 비디오 (0) | 2023.10.22 |
unix:/var/run/docker.sock에서 도커 데몬에 연결할 수 없습니다.도커 데몬이 실행 중입니까? (0) | 2023.10.22 |
재정의는 C에서는 허용되지만 C++에서는 허용되지 않습니까? (0) | 2023.10.22 |
맵 또는 집합을 얕은 클론 (0) | 2023.10.22 |