How are captures written in xiangqi notation?
These answers restate the rules implemented by our open-source engine, which follows the WXF laws for movement, checkmate and both repetition rulings: a side that forces a repetition by perpetual check or perpetual chase loses rather than drawing. The chase half has not been validated against the official casebook. Where an answer refers to a specific position, that position lives on the linked reference page, where the build verifies it before publishing.
Direct answer
They are not marked. Xiangqi notation records where a piece goes, not what it finds there — so there is no equivalent of chess's x. Whether a move was a capture is implied by the position, and reading a game record means keeping the position in your head or on a board.
Why the system can afford to omit it
Because a xiangqi move fully specifies a destination. Chess's x exists partly for disambiguation in algebraic notation; xiangqi's move already identifies both the piece and where it lands, so the capture adds no information the reader needs to reconstruct the move.
What is also not marked
Check and checkmate. There is no + for check — + means forward — and no #. A game record simply stops, with the result written at the end. Annotated books add their own symbols, but the base notation carries none.
Related questions
How do I know if a move was a capture?
By following the position. Any tool that replays the game will show it.
Is there a symbol for check?
Not in the base notation — + already means "advance".